gpt4 book ai didi

mysql - 如何正确构建关系型 mySQL 数据库

转载 作者:太空宇宙 更新时间:2023-11-03 11:03:56 24 4
gpt4 key购买 nike

我正在制作一个用于员工排类的数据库。我有史以来第一次制作一个关系型 mySQL 数据库,以便我可以有效地管理所有数据。我一直在使用 mySQL Workbench 程序来帮助我想象这将如何进行。这是我目前所拥有的:

Mock Up

我脑海中的画面是,根据绘图,我将在 schedule 表中设置时间表,该表使用其他表的引用,如图所示。然后,当我需要显示此时间表时,我会从 schedule 表中提取所有内容。每当我过去使用数据库时,它都不是规范化类型,所以我只是将数据输入一个表,然后从该表中提取数据。现在我正在处理一个更大的项目,我确信像这样拆分(规范化)所有表是可行的方法,但我无法看到所有内容最终是如何组合在一起的。我感觉它不像我想象的那样工作,@grossvogel 指出了我认为对使这一切正常工作至关重要的东西,那就是使用 join 函数来拉动数据。

我开始使用关系数据库的原因是,如果我更改(例如)shift 表,而不是记录 1 是“AM”,我希望它是“Morning” ",然后它会通过 cascade 选项自动更改相关部分。

我在这里发布这个的原因是因为我希望有人可以帮助填补空白并为我指明正确的方向,这样我就不会花很多时间才发现我走错了路在一开始。

最佳答案

也许您缺少的部分是使用带有 joins 的查询从多个表中提取数据的想法。例如(只是合并你的几个表):

SELECT Dept_Name, Emp_Name, Stat_Name ...
FROM schedule
INNER JOIN departments on schedule.Dept_ID = departments.Dept_ID
INNER JOIN employees on schedule.Emp_ID = employees.Emp_ID
INNER JOIN status on schedule.Stat_ID = status.Stat_ID
...
where ....

另请注意,包含需要在最终页面上显示的所有信息的计划表不符合关系数据建模的精神。您希望每个表都对您的应用程序中的某些实体建模,因此如果每一行代表一个类次,则将 schedule 重命名为 shifts 可能更合适。 (我通常对表使用单数名称,但那里有 multiple perspectives。)

关于mysql - 如何正确构建关系型 mySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13378114/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com