Mysql SQL表设计样式:
我是SQL的初学者,希望确保我正在为正在创建的数据库进行适当的体系结构设计 我提出了一个更简单的整体设计示例 假设我有一张桌子:Mysql SQL表设计样式:,mysql,sql,Mysql,Sql,我是SQL的初学者,希望确保我正在为正在创建的数据库进行适当的体系结构设计 我提出了一个更简单的整体设计示例 假设我有一张桌子: mysql>创建表动物(名称varchar(255),标志int) 其中旗帜代表动物属性的真值,如食肉动物、两栖动物、哺乳动物等 因为int只是一个二进制数,所以我可以使用XOR来过滤这些标志,以获得我想要匹配的内容 或者我可以有一张这样的桌子: mysql>创建表动物(名称varchar(255)、flag1位、flag2位、flag3位) 我关注的是: 使用这种方
mysql>创建表动物(名称varchar(255),标志int)代码>
其中旗帜代表动物属性的真值,如食肉动物、两栖动物、哺乳动物等
因为int只是一个二进制数,所以我可以使用XOR来过滤这些标志,以获得我想要匹配的内容
或者我可以有一张这样的桌子:
mysql>创建表动物(名称varchar(255)、flag1位、flag2位、flag3位)代码>
我关注的是:
使用这种方法是否浪费了位,或者如果我有flag1-flag8,将使用一个字节
最终:
这是进行这种设计的合适方式吗?如果没有,我们将非常感谢您的指导
我知道我可以为食肉动物、两栖动物、哺乳动物等拥有大量的表格,这些表格中的条目在哺乳动物中具有相同的名称,这将避免我想使用标志,但这对我来说几乎是浪费。要正确规范化,您需要创建另一个表格:
Animals (animalID, animalName)
Flags (flagID, flagName)
AnimalFlags (animalID, flagID)
这将允许您根据需要为每个动物设置尽可能多或尽可能少的标志,而无需使用XOR进行解析。要正确规范化,您需要创建另一个表:
Animals (animalID, animalName)
Flags (flagID, flagName)
AnimalFlags (animalID, flagID)
这将允许您在不必使用XOR解析的情况下,根据需要为每个动物创建任意多或尽可能少的标志。您最好创建一个动物表、一个类别表和另一个类别表
create table Animals(AnimalID int, AnimalName varchar(255));
create table Categories(CategoryID int, CategoryName varchar(255));
create table AnimalCategoryLink(AnimalID int, CategoryID int);
这将为您提供添加任意多个类别的灵活性,并且您还可以在运行时添加类别
您可以根据需要使用这些表之间的联接进行筛选。最好为动物创建一个表,为类别创建另一个表,并为动物分配一个类别
create table Animals(AnimalID int, AnimalName varchar(255));
create table Categories(CategoryID int, CategoryName varchar(255));
create table AnimalCategoryLink(AnimalID int, CategoryID int);
这将为您提供添加任意多个类别的灵活性,并且您还可以在运行时添加类别
您可以根据需要使用这些表之间的联接进行筛选。表中的条目是否只能是可用类型之一(即动物只能是一种物种?)表中的条目是否只能是可用类型之一(即动物只能是一种物种?),这似乎是我考虑过的最佳方法。我真的很感激你的回答。谢谢。这似乎是我考虑过的最好的方法。我真的很感激你的回答。非常感谢。