我是 SQL 的初学者,我想确保我正在为我正在创建的数据库进行正确的架构设计。
我想出了一个更简单的整体设计示例。
假设我有一张桌子:
mysql> create table Animals(name varchar(255), flags int);
其中 flags 保存动物属性的真值,例如食肉动物、两栖动物、哺乳动物等。
由于 int 只是一个二进制数,我可以使用 XOR 来过滤这些标志,以获得我想要匹配的内容。
或者我可以有一个这样的表:
mysql> create table Animals(name varchar(255), flag1 bit, flag2 bit, flag3 bit);
我对此的担忧是:
使用这种方法是否会浪费位,或者如果我有 flag1 - flag8,将使用一个字节?
最终:
这甚至是进行这种设计的合适方法吗?如果没有,一些指导将不胜感激。
我知道我可以有大量的表格,比如食肉动物、两栖动物、哺乳动物等等,它们在哺乳动物中会有同名的条目,这可以避免我想要使用标志,但这对我来说几乎是浪费。