当前位置:   article > 正文

数据库-库表设计 【分享一些库表设计经验】_数据库表设计

数据库表设计

本文的核心内容:记录积累一些库表设计方案与技巧

数据库实体与实体间的对应关系

1)数据库表的菜单【分类】设计:如省市关联、图书的一、二级分类。

2)数据库表设计之树形结构的表

3)表的简化方案(特定情况,例如,用户触发过的场景记录表)

4)数据库表设计之购物车,利用Session暂时存储购物车信息。


实体与实体间的对应关系

一对一

一对一,一般用于对主表的补充。假设A表为用户信息表,存储了用户的姓名、性别、年龄等基本信息。用户的家庭住址信息也属于用户的基本信息。我们可以选择将用户的家庭住址信息放到用户信息表,也可以单独建一张表,存储用户的家庭住址信息,以用户信息表的主键作为关联。

需不需要拆分取决:表信息的关联程度、表的字段个数限度。

一对多

一对多,是最常见的一种设计。就是 A 表的一条记录,对应 B 表的多条记录,且 A 的主键作为 B 表的外键。举几个  例子:

    1. 班级表 与 学生表,一个班级对应多个学生,或者多个学生对应一个班级。
    2. 角色表 与 用户表,一个角色对应多个用户,或者多个用户对应一个角色。
    1. 商品表 与 图片表,一个商品对应多张图片,或者多张图片对应一个商品。

多对多

构建一张关系表将两张表进行关联,形成多对多的形式。例如:

    1. 老师表、学生表;一个学生可以选修多个老师的课程、同时一个老师也可以教多个学生。
  1. --教师表
  2. CREATE TABLE #Teacher(TeacherId int, Name nvarchar(20));
  3. INSERT INTO #Teacher VALUES(1, '张老师'), (2, '王老师');
  4. --学生表
  5. CREATE TABLE #Student(StudentId int, Name nvarchar(20));
  6. INSERT INTO #Student VALUES(1, '小张'), (2, '小赵');
  7. --老师学生关系表
  8. CREATE TABLE #Teacher_Student(StudentId int, TeacherId int);
  9. INSERT INTO #Teacher_Student VALUES(1, 1), (1, 2),(2, 1), (2, 2);

一:数据库表的菜单【分类】设计:如省市关联、图书的一、二级分类

BookType 一级分类:  少儿、外语、计算机

BookClass 二级分类: 少儿[0-2岁、3-6岁、7-10岁、11-14岁、儿童文学]

                                     外语[英语、日语、韩语、俄语、德语]

                                     计算机[计算机理论、计算机考试、数据库、人工智能、程序设计]

BookInf 图书详情 :    图书信息的详细字段。。。

基于以上关系:我们建表有两种方法

①:建立三张表 一级分类表,二级分类表、图书详情表

一级分类ID->作为二级分类的外键

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/686034
推荐阅读
相关标签
  

闽ICP备14008679号