Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在关系数据库管理系统中,是否有针对具体对象的正式设计原则,例如课程与课程设置?_Mysql_Schema_Rdbms_Database Schema_Database Design - Fatal编程技术网

Mysql 在关系数据库管理系统中,是否有针对具体对象的正式设计原则,例如课程与课程设置?

Mysql 在关系数据库管理系统中,是否有针对具体对象的正式设计原则,例如课程与课程设置?,mysql,schema,rdbms,database-schema,database-design,Mysql,Schema,Rdbms,Database Schema,Database Design,在设计RDBMS模式时,我想知道是否有具体对象的形式化原则:例如,如果是Persons表,那么每个记录都是非常具体和唯一的。事实上,每条记录都代表一个独特的人 但是像课程(在学校里)这样的表格呢。它可以有一个描述,单元数量,只在秋季(秋季)或春季提供,等等,这是一门课程的“一般属性” 然后是实际的课程设置,其中包含关于从到的时间(如上午10点到11点)的信息,无论是星期一、星期三还是星期二/星期四,以及教授该课程的讲师,还使用课程id指向课程表 因此,以上两个表都是必需的 是否有“具体”与“抽象

在设计RDBMS模式时,我想知道是否有具体对象的形式化原则:例如,如果是Persons表,那么每个记录都是非常具体和唯一的。事实上,每条记录都代表一个独特的人

但是像
课程
(在学校里)这样的表格呢。它可以有一个描述,单元数量,只在秋季(秋季)或春季提供,等等,这是一门课程的“一般属性”

然后是实际的
课程设置
,其中包含关于从
时间(如上午10点到11点)的信息,无论是星期一、星期三还是星期二/星期四,以及教授该课程的讲师,还使用
课程id
指向课程表

因此,以上两个表都是必需的

是否有“具体”与“抽象”的表格设计原则

更新:我这里所说的“抽象”是指课程是一个抽象的概念。。。它可以有多个实例。。。比如上午10点到11点的物理课,以及下午12点到1点的物理课

例如,如果它是Persons表,那么每个记录都是非常具体和唯一的。事实上,每条记录都代表一个独特的人

这是希望,而不是形势的现实

根据移民或法定死亡身份,可能有两个(或更多)记录代表同一个人。唯一地识别人是困难的-第一,中间和姓氏可以匹配,但实际上反映了不同的人。SSN/SIN不可靠,因为它们可以改变(移民、合法死亡)。名字不能保证性别,性别可以改变

是否有“具体”与“抽象”表格设计的原则 “具体”与“抽象”的分类是任意的,需要解释。开始和结束日期真的让课程变得“具体”了吗?因为我可以在[选择的日历软件]中预订很多东西,但这并不意味着实际上课,也不意味着最终成绩是合法的值


表设计基于业务规则以及支持这些规则所需的逻辑实体(可以成为物理模型中的表)。规范化有助于使这些实体更加明显。

基于数学的关系数据模型证明了一种设计数据模型的方法,在这种模型上,某些操作是正确的,没有风险

不幸的是,这种数据模型并不适合解决数据库中的性能问题。如何组织某些业务域的表不仅需要考虑对象抽象模型或数据库规范化,还要考虑系统上的性能规划。是的,抽象的泄漏

例如,树结构有两种设计策略:邻接模型和物化路径模型()。哪一个更好取决于哪些操作需要优化

我推荐一篇优秀而经典的文章:

抽象有它的价格(通常高于预期)
基思·库珀


当然,在我看来,这是数据库设计的灵魂。

你是说,做任何实际的事情,比如课程表,它实际上有很多课程,李教授上午10-11点,汉克斯教授晚上11-12点,但是由于
课程描述
单元数
重复太多(不是3NF),我们将其移动到一个名为
CoursedDescriptions
的单独表中?那么,在实际情况下,哪种方法有效呢?@Jian Lin:构建数据库(不填充数据),然后检查设计,看看它是否意味着第三范式(3NF)。有些关系是显而易见的,而其他关系,如课程和部分/会话/实例则不那么明显。可以将DBMS用作存储对象的地方(但不要期望它支持大多数OO语言),或者使用关系模型存储数据并将其映射到对象。不要混淆这两种方法-它们根本不兼容。您似乎还混淆了抽象(暗示非有形)和用于OO编程的术语抽象。