精华内容
下载资源
问答
  • 在传统的关系数据库设计中,每一行和每一行都是列必须只存储一个值.不要存储以逗号分隔的列表或任何古怪的东西.例如,运动队有七名成员.你可以这样做:CREATE TABLE team (team_id INT PRIMARY KEY,team_name VARCHAR...

    在传统的关系数据库设计中,每一行和每一行都是列必须只存储一个值.

    不要存储以逗号分隔的列表或任何古怪的东西.

    例如,运动队有七名成员.你可以这样做:

    CREATE TABLE team (

    team_id INT PRIMARY KEY,

    team_name VARCHAR(50),

    team_members VARCHAR(200)

    );

    INSERT INTO team VALUES (1,'Dwarfs', 'Sleepy,Dopey,Sneezy,Happy,Grumpy,Doc,Bashful')

    但最好这样做:

    CREATE TABLE team (

    team_id INT PRIMARY KEY,

    team_name VARCHAR(50),

    );

    INSERT INTO team (team_name) VALUES ('Dwarfs');

    CREATE TABLE team_members (

    team_id INT,

    member_name VARCHAR(20),

    FOREIGN KEY (team_id) REFERENCES team(team_id)

    );

    INSERT INTO team_members VALUES

    (LAST_INSERT_ID(), 'Sleepy'),

    (LAST_INSERT_ID(), 'Dopey'),

    (LAST_INSERT_ID(), 'Sneezy'),

    (LAST_INSERT_ID(), 'Happy'),

    (LAST_INSERT_ID(), 'Grumpy'),

    (LAST_INSERT_ID(), 'Doc'),

    (LAST_INSERT_ID(), 'Bashful');

    nb:LAST_INSERT_ID()是一个MySQL函数.其他品牌的数据库也提供类似的解决方案.

    展开全文
  • 目录列属性简单属性属性又称为字段属性,在mysql中共有6个属性,null,默认值,列描述,主键,唯一键和自动增长null属性null属性,代表字段为空 如果对应的值为YES表示该字段可以为空值注意:在设计表的时候,尽量...

    目录

    列属性

    简单属性

    列属性又称为字段属性,在mysql中共有6个属性,null,默认值,列描述,主键,唯一键和自动增长

    null属性

    null属性,代表字段为空

    7ab1a1a50977e1fb80468afec36d569c.png

    如果对应的值为YES表示该字段可以为空值

    注意:

    在设计表的时候,尽量不要让数据为空

    默认值

    default:默认值,当字段被设计的时候,如果允许默认条件下,用户不进行数据的插入,那么就可以使用事先准备好的数据来填充,通常填充的是NULL

    2bd8e8e9fdb181703ce6360df9833103.png

    测试:不给当前字段提供插入值

    e30472c51c3a761f4e19ba359f58e0af.png

    从图中可以发现age字段使用默认值18进行填充

    default关键字的另外一层使用,显示的告知字段使用默认值,在进行数据插入的时候,对字段值直接使用default

    7bd5352e9738edda833fdde4fb177253.png

    列描述

    comment:专门用于给开发人员进行维护的一个注释说明

    基本语法:

    comment 字段描述;

    1ba121ce287ee7499cf173ec61a9a3b0.png

    查看comment,必须通过查看表创建语句

    主键

    顾名思意,主要的键,primary key,在一张表中,有且只有一个字段,里面的值具有唯一性

    创建主键

    随表创建

    系统提供了两种增加主键的方式

    方案一:直接在需要当作主键的字段之后,增加primary key属性来确定主键

    500742f0c404572562b01f9cdc69a424.png

    方案二:在所有字段之后增加primary key选项,primary key(字段信息)

    fb90d91a2bcc98a83ac3ca86b9fd563a.png

    表后增加

    基本语法:

    alter table 表名 add primary key(字段);

    4c0de2eece1d3e0645dd65b2eb506720.png

    查看主键

    方案一:查看表结构

    a210c1d8d6934c347457e58bf27776d7.png

    方案二:查看表的创建语句

    1576627c63aa9f1ff5d37218b8ea42fa.png

    删除主键

    基本语法:

    alter table 表名 drop primary key;

    34b77c27e85716665ed6f281dba97f35.png

    复合主键

    案例:有一张学生选修课表,一个学生可以选修多个选修课,一个选修课也可以由多个学生来选,但是一个学生在一个选修课中只有一个成绩。

    adf003c523e98eef90c9511f0805bcb5.png

    主键一般用在中间表,学生有学生表,课程有课程表,学生与课程的中间表my_score就用复合主键

    主键约束

    主键一旦增加,那么对对应的字段有数据要求

    1、当前字段对应的数据不能为空;

    2、当前字段对应的数据不能有任何重复;

    904987f22270dff27fc1e1cdcf32f9f6.png

    数据重复后报错:

    555ee763f12dba919664cb40cf7ba41b.png

    主键分类

    主键分类采用的是主键所对应的字段业务意义分类

    业务主键:主键所在的字段,具有业务意义(学生ID,课程ID)

    逻辑主键:自然增长的整型(应用广泛)

    自动增长

    自动增长,auto_increment,当给定某个字段该属性之后,该列的数据在没有提供确定数据的时候,系统会根据之前已经存在的数据进行自动增加后填充。

    通常自动增长用于逻辑主键。

    原理

    1、系统中有维护一组数据用来保存当前使用了自动增长属性的字段,记住当前对应的数据值,再给定一个指定的步长;

    2、当用户进行数据插入的时候,如果没有给定值,系统在原始值上再增加上步长变成新的数据;

    3、自动增长的触发,给定属性的字段没有提供值;

    4、自动增长只适用于数值;

    使用自动增长

    基本语法:

    在字段之后增加一个属性auto_increment

    01f0b6a577330d050db30db3ddf601d0.png

    f3cf06e976a1cfc8d61edbd5621f4bc3.png

    修改自动增长

    1、查看自增长,自增长一旦触发之后,会自动的在表选项中增加一个选项(一张表最多只能拥有一个自增长)

    5b2a455e62b9d73750a8d108eab2ccf5.png

    2、表选项可以通过修改表结构来实现

    基本语法:

    alter table 表名 auto_increment=数值;

    37a9dbe6ffa7536c0df4dd9bb49bccc6.png

    删除自动增长

    删除自增长,就是在字段属性之后不再保留auto_increment,当用户修改自增长所在字段时,如果没有看到auto_increment属性,系统会自动清除该自增长

    d4fb6aa88d76704d85bf480dbbebfdbe.png

    初始设置

    在系统中,有一组变量用来维护自增长的初始值和步长

    a30df2bd6bff58bfd3cd1a83603cd156.png

    细节问题

    1、一张表只有一个自增长,自增长会上升到表选项中

    2、如果数据插入中没有触发自增长(给定了数据),那么自增长不会表现

    6f3c9d2d85ff4e75853caea987496c17.png

    3、自增长修改的时候,值可以较大,但是不能比当前已有的自增长字段的值小

    bd19f5c894da23ef201e95bf22bf943c.png

    唯一键

    unique key,用来保证对应的字段中的数据唯一的

    主键也可以用来保证数据唯一性,但是一张表只有一个主键

    1、唯一键在一张表中可以有多个

    2、唯一键允许字段数据为NULL,NULL可以有多个(NULL不参与比较)

    创建唯一键

    创建唯一键与创建主键非常类似

    1、直接在表字段之后增加唯一键标识符,unique [key];

    -- 唯一键

    create table my_unique1(

    id int primary key auto_increment,

    username varchar(10) unique

    )charset utf8;

    474b5edf3a4a8790d54bd25ee7157d45.png

    2、在所有的字段之后使用unique key(字段列表);

    create table my_unique2(

    id int primary key auto_increment,

    username varchar(10),

    unique key(username)

    )charset utf8;

    056728b546d1107de1d9e39e75a945e1.png

    3、在创建完表之后也可以增加唯一键;

    alter table 表名 add unique key(字段列表);

    6e8b3ac48d4a78f0babb82da6154ae40.png

    查看唯一键

    785b32825971c1910ec4b8f263865757.png

    唯一键效果:在不为空的情况下不允许重复

    8d0dc94cd569ad4c6228bc4fe1e769a8.png

    在查看表创建语句的时候,会看到与主键不同的一点:多出一个“名字”

    362e1c4fc16f50ed3403a7ebc28e1e93.png

    删除唯一键

    index:关键字,唯一键是索引的一种(提升查询效率)

    基本语法:

    alter table 表名 drop index 唯一键名字;

    78da7bed41d84eb040cf5ee75818ce50.png

    修改唯一键

    先删除后增加

    复合唯一键

    唯一键与主键一样,可以使用多个字段共同保证唯一性

    一般主键都是单一字段(逻辑主键),而其他需要唯一性的内容都是由唯一键来处理

    本文地址:https://blog.csdn.net/qq_43802023/article/details/112604273

    如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

    展开全文
  • 商品规格多属性模型设计思路

    千次阅读 2021-01-20 03:48:40
    区分货品(SPU)和商品(SKU)SPU = ...SKU=stock keeping unit(库存量单位):对于服装来讲,它应该会有尺寸、颜色等规格,以及该规格下对应的属性,如:XL、L、红色、白色等等,不同属性组合所表示的就是一个 SKU...

    区分货品(SPU)和商品(SKU)

    SPU = Standard Product Unit (标准化产品单元):

    一件衬衣,它就是一个 SPU,此外它不具有库存、价格等因素,它仅仅是众多款衬衣抽象出来了一个货品。

    SKU=stock keeping unit(库存量单位):

    对于服装来讲,它应该会有尺寸、颜色等规格,以及该规格下对应的属性,如:XL、L、红色、白色等等,不同属性组合所表示的就是一个 SKU,如 尺寸:XL、颜色:红色,它会有库存、价格,用户真正下单所购买的也是 SKU,而不是 SPU。

    SPU是标准化产品单元,区分品种;SKU是库存量单位,区分单品;SPU 与 SKU 是 ONE-TO-MANY 的关系。

    规格模型

    SPU 是一个抽象出来的货品,货品再向上可以抽象为一个分类。如衬衣,它的规格尺寸、颜色等,是衬衣这个 SPU 所共有的,衬衣再网上可以归类为 服装 分类,服装这个分类可以包括多种 SPU,如衬衣、牛仔裤、T恤等等。

    那么我们在创建一个分类时,就可以针对某个分类,如服装,定义好服装下面的公共规格,如:尺寸、颜色、尺码等等。

    再创建一个货品时,便可将该分类下的规格,选择一个或者多个与货品形成绑定关系。

    分类与规格:ONE-TO-MANY;

    分类与货品:ONE-TO-MANY;

    规格与货品:MANY-TO-MANY;

    表结构设计

    1. 数据表列表:

    (分类)category

    (规格)attribute

    (属性)value

    (货品)product

    (商品)sku

    2. 数据表关系:

    分类、规格:ONE-TO-MANY

    规格、属性:ONE-TO-MANY

    分类、货品:ONE-TO-MANY

    货品、商品:ONE-TO-MANY

    货品、规格:MANY-TO-MANY

    货品、属性:MANY-TO-MANY

    商品、属性:MANY-TO-MANY

    3. 简单的表结构图:

    987c19708fe8a007baab42cd91fb89d1.png

    数据结构

    现在我们设计好了模型,在进行前后端交互时,如何组织数据结构,利于前端渲染数据呢?我们在京东上找到一个带有多规格的商品,左边是规格(attribute)名称,右边是不同规格下的属性值(value),如图:

    5a703f07466d5d018a169e434240e2cf.png首先,前端需要将该货品(SPU)下的全部规格及属性渲染出来,再根据用户所组合的属性来显示对应商品(SKU)的价格、库存等信息。那么我们大致的数据结构可以组装成这样:

    d84398adb11e0542077869fd59485a2b.png

    渲染方式

    前端通过 detail 显示货品的公共信息,通过 attrs 将规格及规格的属性渲染至页面中,用户在每次勾选属性时,拼接 attr_id 及 value_id,在 skus.combines 中查询是否存在该组合,若存在,则显示当前 skus 的价格、库存等等信息。

    同时,我们也可以将 sku_code 放在商品详情的 url 参数中,前端获取到 sku_code 后,通过 sku_code 也可以逆向查询到当前的 attribute 及 value 组合方式,直接将符合 sku_code 的属性渲染为 已选中 的高亮样式。

    查询流程

    只是简单的描述根据上述表结构,如何通过 product_id 进行查询并将查询结构封装为上图所示的数据结构,可能并非最优查询方式,这里我直接使用 Django 的 ORM 进行查询。

    1. 封装 detail & attrs:

    根据 product_id 可以直接在 product 表中查询到货品的基本信息,并将 product.id、product.name、product.desc 封装进 detail 属性中;

    由于 product 与 attribute 及 value 均为 MANY-TO-MANY 的关系,我们可以通过 product_attribute 表、product_value 表获取到该 product 所关联全部的 attributes & values。

    由于 attribute 与 value 是 ONE-TO-MANY 的关系,那么只需要循环 attributes,通过判断 value.attribute_id 与当前的 attribute.id 是否相等,便能将 attribute 与 value 组合封装。

    d556df72531d592b462ab04e6a0bafc7.png

    2. 封装 skus

    由于 product 和 sku 是 ONE-TO-MANY,通过 product,能直接获取到其全部的 skus。

    接下来,sku 与 value 是 MANY-TO-MANY 的关系,便能获取到该 sku 下的全部 value,并通过 value 查询到其对应的 attribute_id,然后封装进每个 sku 的 combines 中。

    add702dc953ecd5665231112c822fe21.png

    完整查询示例

    39770f6c303cec34b03460f52525a9a7.png

    表会比较冗余,因为在创建或修改货品的规格时,需要同时操作 product_attribute、product_value、sku、sku_value 四张表。

    其实 product_attribute、product_value 可以移除,通过 sku 及 sku_value 也能查询到该 product 所涵盖的 attribute & value。

    展开全文
  • 展开全部单值属性,指—个...属性,对于一个实体可以有个值的属性。例如:一张学生信息的表里有一项关于兴趣的属性,一个学生可能有几个兴趣 ,如运动、电影、旅游,学习等,这些...

    展开全部

    单值属性,指—个32313133353236313431303231363533e4b893e5b19e31333433616230实体只有一个值的属性,例如:实体“书”的价格只有一个(如 ¥38.5)。对于具体的实体来说,大多数实体是单值属性。

    多值属性,对于一个实体可以有多个值的属性。例如:一张学生信息的表里有一项关于兴趣的属性,一个学生可能有几个兴趣 ,如运动、电影、旅游,学习等,这些学生可以只拥有“运动”的兴趣,或者同时拥有“运动、电影、旅游,学习”这四个兴趣,所以兴趣就是一个多值属性。

    89d89e5fbb0b2dd3495588c5643e3918.png

    扩展资料

    属性数据的录入与编辑一般是在属性数据处理模块中进行的,文档数据资料的录入一般是通过键盘直接键入数据文件或属性数据库。也可以将另一个数据库中的有关数据直接传输到属性数据库中。但为了建立属性描述数据与几何图形的联系,通常需要在图形编辑系统中设计属性数据的编辑功能。

    主要是将一个实体的属性数据直接连接到相应的几何目标上,这项工作可在数字化及建立图形拓扑关系的同时或之后,对照一个几何目标直接输人属性数据,并可对数据进行修改、删除、拷贝等编辑操作。

    属性数据的录人随着VGI的出现,呈现出了一种全新的方式。人们可以通过互联网GIS平台上传自己感兴趣的数据,除了位置信息之外,还可以贡献很多的属性数据,其形式也表现的多种多样,如照片、视频、音频等。

    展开全文
  • 数据库中的属性

    2021-01-19 03:16:34
    在传统的关系数据库设计中,每行&列必须只存储一个值。不要存储逗号分隔的列表或任何古怪的东西。例如,说一个运动队有七个成员。你可以这样做:CREATE TABLE team (team_id INT PRIMARY KEY,team_name VARCHAR...
  • MySQL数据库设计

    2021-01-19 21:38:50
    MYSQL数据库设计规范1、数据库命名规范采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线'_'组成;命名简洁明确(长度不能超过30个字符);例如:user, stat, log, 也可以wifi_user, wifi_stat, wifi_...
  • mysql 数据库属性

    2021-01-28 03:17:11
    liunx下mysql数据库使用之三范式,关系模型设计注意项,安装目录结构数据库的三范式第一范式===>每行记录的属性,是原子的,拆到不可拆为止。===>例如:一个人的籍贯,可以拆分为,省,市,县,乡,村第二范式...
  • 我正在设计一个产品数据库,其中产品可以根据其类型具有非常不同的属性,但是每种类型的属性都是固定的,并且类型根本不可管理.例如.:magazine:title,issue_number,pages,copies,close_date,release_dateweb_site:...
  • 数据库设计

    2021-09-14 09:58:39
    数据库设计 数据库设计概念 数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构, 并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括...
  • 在上一篇“浅析租户在 Java 平台和某些 PaaS 上的实现”中我们谈到了应用层面的租户架构,涉及到 PaaS、JVM、OS 等,与之相应...在SaaS实施过程中,有一个显著的考量点,就是如何对应用数据进行设计,以支持租...
  • 目录学生管理系统数据库设计学生管理系统功能介绍数据库设计步骤第1步: 找对象第2步:找属性第3步: 找关系建表原则第4步: 找特例: 等级明显而且不包含敏感数据的信息建议保持为1张表总结: 数据库设计遵循的原则[重点]...
  • 比如:记录1:3、5、7(符合)记录2:6、8、9(不符合)请问如何设计数据库比较合理?充分考虑到性能优化。回复讨论(解决方案)我好像想到方法了。在数据库里面是这样保存B字段的数据的|2|4|6|3|如果我要查询是否含有3.就 ...
  • 数据库设计步骤

    2021-01-26 06:04:15
    目录总体设计过程数据库设计步骤:设计描述:数据库设计不同阶段形成的数据库各级模式:数据库设计的特点:需求分析分析和表达用户需求:首先把任何一个系统都抽象为:分解处理功能和数据:分解处理功能:将处理功能的具体...
  • SKU数据库设计

    2020-12-31 12:39:54
    ## 方法二 ### 京东的商品 SKU 设计 举个例子:博世的空调滤清器,再商品列表页空调滤清器分类博世品牌下全是同一 SPU 不同 SKU 的热销商品,进入到单个商品页面里,也可以选择其他的 SKU ,选择其他 SKU 就跳转到...
  • 数据库 复合属性

    2021-03-04 05:43:17
    EAV和6NF数据库具有更的Joins,它们与行人一样。当然,如果您必须手动编写每个SELECT的代码,那么麻烦就变得很麻烦。 可以通过(a)在EAV上使用6NF以及(b)实施目录来消除整个问题,从中可以(c)生成所有基本...
  • java数据库设计

    2021-01-27 05:47:37
    转自:http://hi.baidu.com/gddzmr/item/afd658cdfec81c25e80f2ec1下述十四个技巧,是许多人在大量的数据库分析与设计实践中,逐步总结出来的。对于这些经验的运用,读者不能生帮硬套,死记硬背,而要消化理解,...
  • 请问大神们,这种结构如何实现,目前是以下做法:有属性名表 goods_attr有属性值表 goods_attr_value但是 不同的属性值选择会有不同的价格,这种个值决定一个值的情况真没遇见过,请问如何解决?回复内容:请问...
  • 数据库设计概述 数据库设计的任务和特点 数据库shi 数据库应用系统设计 数据库文档设计 数据库应用程序设计案例
  • MySQL数据库设计基础

    2021-02-08 12:42:44
    为什么需要规范的数据库设计?什么是数据库设计?数据库设计就是将数据库中的数据实体及这些数据实体之间的关系,进行规划和结构化的过程.数据库设计非常重要!数据库中创建的数据结构的种类,以及在数据实体之间建立的...
  • 1 MySql数据库建模过程需求分析阶段:分析客户的业务和处理需求概要设计阶段:设计数据库的E-R模型图,确认需求信息的正确和完整详细设计阶段:应用三大范式审核数据表结构代码编写阶段:物理实现数据库,编码实现...
  • 为什么需要规范的数据库设计 通过进行规范化的数据库设计,可以消除不必要的数据冗余,获得合理的数据库设计,提高项目的应用性能。 什么是数据库设计 就是将数据库中的数据实体及这些数据实体之间的关系,进行...
  • MySQL 数据库设计

    2021-01-19 08:21:27
    MySQL画图:workbench 工具里---Database---Reverse Engineer---NEXT---选择数据库---Next---Next即可画出diagram,代表表与表之间的连接数据库设计:基本设计流程:需求分析---设计---实现---运行维护其中设计包含三...
  • 四种优秀的数据库设计工具

    千次阅读 2021-01-18 19:19:19
    【51CTO.com快译】众所周知,...本文将从如下四个方面和您一起比较四种优秀数据库设计工具的各自优缺点。用户界面可支持的数据库数据工具售价1.DbSchemaDbSchema是一种可用于复杂数据库设计和管理的可视化工具。该...
  • 9.数据库设计

    2021-08-17 14:42:37
    数据库设计 1、数据库设计概述 数据库设计。广义地讲,是数据库及其应用系统的设计,即设计整个数据库应用系统;狭义地讲,是设计数据库本身,即设计数据库的各级模式并建立数据库, 这是数据库应用系统设计的一...
  • 简谈数据库设计

    千次阅读 2021-02-14 22:19:17
    数据库设计就是根据业务系统的具体需要,结合我们所选用的DBMS(数据库管理系统),为这个业务系统构造出最优的数据存储模型。并建立好数据库中的表结构及表与表之间的关联关系的过程。使之能有效的对应用系统中的数据...
  • 完整建库建表SQL命令参考学生管理系统数据库设计设计一套数据库首先要熟悉当前系统有哪些功能,具体的业务流程是什么学生管理系统功能介绍一套学校用的学生管理系统,最核心的功能如下学生信息管理(增加学生,删除学生,...
  • 我关于数据库设计的问题是,我如何跟踪每家商店的产品?>例子>商店1有产品1,5,10,200>商店2有产品2,5,7,100>商店3有产品1,7,10,300>等……>我的store表中是否有一个列,其id存储为由{1; 5; 10; 20}...
  • 1、一对一可以两个实体设计在一个数据库中l例如设计一个夫妻表,里面放丈夫和妻子2、一对可以建两张表,将一这一方的主键作为那一方的外键,例如一个学生表可以加一个字段指向班级(班级与学生一对的关系)3、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 475,854
精华内容 190,341
关键字:

多属性数据库设计