user_drug.user_id
受外键drug.id
(主键)的约束。
表结构如下:
user
id name income
1 Foo 10000
2 Bar 20000
3 Baz 30000
drug
id name
0 Marijuana
1 Cocaine
2 Heroin
user_drug
user_id drug_id
1 1
1 2
2 1
2 3
3 3
从0开始drug.id
是否有任何缺点?我有一种感觉,这将使PHP更自然,因为数组也从0开始,但我想确保使用'0'作为id没有任何缺点(例如,它可能被解释为null或某些其他奇怪的潜在事件/冲突)。
答案 0 :(得分:4)
如果它是一个AUTO INCREMENT col,则零是special value,不应该使用,但这可以是overcome。如果是外键和非AUTO INCREMENT,任何值都可以。如果列定义正确,则零不会被解释为零以外的任何值(空值显示为NULL,与零不同)
答案 1 :(得分:2)
如果那不是自动增量应该没问题,但我不会使用它。 0是当列不能为NULL(并且它是INT列)时MySQL使用的defaut值。
答案 2 :(得分:0)
我认为没有任何缺点,但您需要确保检查0未被解释为false的ID。
答案 3 :(得分:-1)
它不会让事情更自然,因为它是任意的,你的代码不应该关心ID是什么(即你从来没有看到它)。
假设某人正在搜索id,然后对该值执行intval($_GET['name'])
(以确保您没有获得SQL注入)。
如果值为0是合法的,您将无法区分“缺失”的AKA空白字符串和实际的0.显然您可以解决这个问题:您可以检查空白字符串,或者您可以使用-1表示缺失。
但使用0更容易。
就个人而言,我用-1表示缺失(并允许0),但由于MySQL总是默认以1开头,所以我开始有点懒,只是接受它。