Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL表设计样式:_Mysql_Sql - Fatal编程技术网

Mysql SQL表设计样式:

Mysql SQL表设计样式:,mysql,sql,Mysql,Sql,我是SQL的初学者,希望确保我正在为正在创建的数据库进行适当的体系结构设计 我提出了一个更简单的整体设计示例 假设我有一张桌子: mysql>创建表动物(名称varchar(255),标志int) 其中旗帜代表动物属性的真值,如食肉动物、两栖动物、哺乳动物等 因为int只是一个二进制数,所以我可以使用XOR来过滤这些标志,以获得我想要匹配的内容 或者我可以有一张这样的桌子: mysql>创建表动物(名称varchar(255)、flag1位、flag2位、flag3位) 我关注的是: 使用这种方

我是SQL的初学者,希望确保我正在为正在创建的数据库进行适当的体系结构设计

我提出了一个更简单的整体设计示例

假设我有一张桌子:

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);
这将为您提供添加任意多个类别的灵活性,并且您还可以在运行时添加类别


您可以根据需要使用这些表之间的联接进行筛选。

表中的条目是否只能是可用类型之一(即动物只能是一种物种?)表中的条目是否只能是可用类型之一(即动物只能是一种物种?),这似乎是我考虑过的最佳方法。我真的很感激你的回答。谢谢。这似乎是我考虑过的最好的方法。我真的很感激你的回答。非常感谢。