在mysql中我有一个companies
表,我想添加一个名为relationship_type
的字段,并为其分配一些预定义的值,如:
"customer" , "supplier" , "partner" , "potential customer", "friend" ,
"competitor" , ... etc
除了这些值之外,我不希望数据库接受此字段中的任何奇怪值。我知道我可以完成我想要的方式是使用“外键”,通过创建新表调用它relationships
并制作外键约束,但我认为这是一个坏的和浪费表的方式如下例所示:
companies table:
+----------+-----+-------+----------------+
|company_id|Name |address|relationship(FK)|
+----------+-----+-------+----------------+
|0 | A |place1 |customer |
+----------+-----+-------+----------------+
|1 | b |place2 |supplier |
+----------+-----+-------+----------------+
relationship table:
+-----------------+
|relationship(PK) |
+-----------------+
|customer |
+-----------------+
|supplier |
+-----------------+
|partner |
+-----------------+
|competitor |
+-----------------+
我也不想在将使用数据库的客户端应用程序中以编程方式处理这些约束,例如,当用户将其插入数据库时,我不想在我的PHP代码中检查此值,因为我可能会错过我的应用程序中的任何地方,让用户在字段中插入一些不同的值,最后会出现customer
和CUSTOMER
等不一致的数据。
有没有办法让数据库在没有外键的情况下处理这些约束? 并且请考虑我是新手。谢谢