我是数据库规范化领域的新手,我想知道我对创建的表的结构是否做了正确的事情。 我有一个名为“RoomRates”的表,其中包含下一列:
RoomRateId(int), RoomType(int), Season(int), Monday(decimal),Tuesday(decimal), Wednesday(decimal), Thursday(decimal),Friday(decimal), Saturday(decimal), Sunday(decimal)
据我所知,该表的结构违反了第一范式。
我有关于 RoomType 和 Season 的外键。
我应该将表的结构变成:
RoomRateId(int), RoomType(int), Season(int), DayOfTheWeek(int), Rate(decimal)
为了不破坏第一范式?
很快,我会给你一些提示。我建议不要一步一步地完成正常的表格,因为你会重新制作你以前的工作(以及你的团队的工作),除非你正在练习。
作为通用规则设计数据库,每个字段必须在整个数据库中存在一次。您还必须将语义数据分组到表中,并使用外键链接它们。
参考你的问题,我可以对表格进行完全重制。您可能不需要一周中的每一天都有一个列。您是否认为可以只使用一列而不是几列?国外的会尽可能轻(推荐一栏,除非不存在任何其他方式来解决链接)。始终考虑您的设计在查询和存储方面是否对大量数据有用。
我建议您查看此链接:SQL 数据库设计初学者指南
希望这有帮助。
对我来说,你的表格并没有打破 1 规范化形式。 第一种形式 1NF 具有以下特征:无排序,列既不是从左到右,行也不是从上到下。每个交集只有特定域的一个值,没有其他值。但我认为第一种形式的关系最重要的特征就是该关系中的所有属性都应该只具有原子值。具有非原子值的属性应该被分解以达到 1NF。
我认为表列将仅具有原子值。
此外,一周中某一天的列的想法比多个列更好,从而导致更多的存储空间和更多的处理时间。