gpt4 book ai didi

数据库设计主键、ID 与字符串

转载 作者:太空狗 更新时间:2023-10-30 01:39:55 25 4
gpt4 key购买 nike

我目前正计划开发一个音乐流媒体应用程序。我想知道在服务器上的表中作为主键会更好。 ID 整数或唯一字符串。

Methods 1:

歌曲表:SongID(int), Title(string), *Artist**(string), Length(int), *Album**(string)

类型表流派(字符串),名称(字符串)

歌曲类型:***SongID****(int), ***Genre****(string)

Method 2

歌曲表:SongID(int), Title(string), *ArtistID**(int), Length(int), *AlbumID**(int)

类型表流派ID(整数),名称(字符串)

歌曲类型:***SongID****(int), ***GenreID****(int)

键:粗体 = 主键,*字段** = 外键

我目前正在使用方法 2 进行设计,因为我相信它会加快查找性能并使用更少的空间,因为 int 比字符串占用的空间少得多。

为什么这不是一个好主意?有什么需要注意的吗?

最佳答案

Is there any reason this isn't a good idea? Is there anything I should be aware of?

是的。如果您需要在单个数据库之外唯一标识相同数据,则整数 ID 非常糟糕。例如,如果您必须将相同的数据复制到另一个可能已经存在数据的数据库系统中,或者您有一个分布式数据库。需要注意的最重要的一点是,像 7481 这样的整数在该数据库之外没有任何意义。如果以后您需要扩大该数据库,如果不通过外科手术删除您的数据,这可能是不可能的。

要记住的另一件事是整数 ID 不那么灵活,因此它们不能轻易用于特殊情况。 Internet 协议(protocol)的设计者了解这一点,并通过以某种方式(广播 IP、私有(private) IP、网络 IP)将某些数字 block 分配为“特殊”来采取预防措施。但这是唯一可能的,因为有一个围绕这些数字使用的 协议(protocol)。许多数据库不在这样一个定义明确的协议(protocol)中运行。

FWIW,这有点像试图决定“强类型”编程范例是否优于“弱/动态类型”编程范例。这将取决于您需要做什么。

关于数据库设计主键、ID 与字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2551776/

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