我希望在“冰与火之歌”系列的每一本书中创建一个列出字符的数据库,列出字符的名称和出现在其中的页面。我可以使用三个字段(不包括主键)名称、PageIntroduced和BookIntroduced,但是Name字段不是原子字段;我可以对它进行相当多的细分。有些角色有头衔(梅斯特、勋爵、爵士),有些角色有家庭名称(斯塔克、兰尼斯特、拜拉克森),很多人物都有昵称(公牛、内德、阿里),还有相当多的国王被正则数区分开来(有5个Aegon!)所以我的桌子看起来可能如下所示:
CHARACTER (
ForeName
HouseName
Title
NickName
RegnalNumber
PageIntroduced
BookIntroduced
)问题是:这是完全过火了,还是应该使用一个包含所有五个属性的"Name“字段,即使它是非原子的?我相信它会更整洁,尤其是对于幸运的“泰格利安王”(King Aegon V),但它会导致很多领域没有被使用--许多字符只有一个名字,而没有其他任何名字,比如"Rorge“、”咬人“和”热派“。这是数据库中的问题吗?数据库中的字段是否为空白是否重要?
发布于 2014-05-25 12:12:37
将姓名与姓氏分开并不是正常化。如果您创建了一系列包含有关表中某些列的其他详细信息的表,那么什么将是正常化。
例如,您可以创建一个HOUSE表,该表包含有关房屋的其他信息,而不是名称,比如它的捕获短语或家乡等等。您可以对TITLE和BOOK做类似的操作。
别担心你的案子会有空子。有些人担心太多的空值,因为它可能是一个迹象,表明您的设计是不正确的,或者因为他们担心浪费磁盘空间。在你的例子中,这两个问题都不是相关的。
https://dba.stackexchange.com/questions/65854
复制相似问题