MySQL express约束作为计算列?

MySQL express约束作为计算列?,mysql,sql,foreign-keys,constraints,Mysql,Sql,Foreign Keys,Constraints,我想表达一下这个概念:当id==province\u id时,那么就是省==1。我如何表达这一点?可能使用计算列或其他约束 编辑:好了,这么多评论,我将解释为什么会有“省”属性。我知道这是多余的,但是这个表将容纳大约8000个条目,所以空间的浪费一点也不重要。我添加is_省是因为(使用DOctrine2)我可以更轻松地查询省: Columns: id INT, provice_id INT, is_province BIT Foreign key: province_id references

我想表达一下这个概念:当
id==province\u id
时,那么
就是省==1
。我如何表达这一点?可能使用计算列或其他约束

编辑:好了,这么多评论,我将解释为什么会有“省”属性。我知道这是多余的,但是这个表将容纳大约8000个条目,所以空间的浪费一点也不重要。我添加is_省是因为(使用DOctrine2)我可以更轻松地查询省:

Columns: id INT, provice_id INT, is_province BIT
Foreign key: province_id references City (id)
是的,我把省和市放在一个表中,因为一个省实际上是一个城市,并且共享它的所有属性


所以我的问题仍然是,如果(id==province\u id)那么is\u province==1,如何实施约束?

可能是您不需要的is\u province

您可以通过添加
选择省份,其中id=province\u id

可能是您不需要的省份

您可以通过添加
选择省份,其中id=province\u id

如果将信息另外存储在表中,则该信息将是多余的。这是一个完美的候选人的看法

$provinces->findByIsProvince(true)
这将为
省提供
TRUE
/
FALSE
。如果需要1/0,则替换为:

CREATE TABLE my_tbl(id INT, provice_id INT);

CREATE VIEW my_view AS
SELECT id, provice_id, (id = province_id) AS is_province
  FROM my_tbl;

有关如何在中创建视图的详细信息。

如果将信息另外存储在表中,则该信息将是多余的。这是一个完美的候选人的看法

$provinces->findByIsProvince(true)
这将为
省提供
TRUE
/
FALSE
。如果需要1/0,则替换为:

CREATE TABLE my_tbl(id INT, provice_id INT);

CREATE VIEW my_view AS
SELECT id, provice_id, (id = province_id) AS is_province
  FROM my_tbl;


有关如何在中创建视图的详细信息。

因此,您将城市和省份合并到一个表中,并希望使用标志来区分这两个?这种结构有什么特别的原因吗?是的,@muistoshort有点意思。您的基本设计可能还有改进的余地。@muistooshort是的,为什么您认为这是错误的?看我的编辑…格雷莫,@mu_是_太短的意思(我想):你为什么没有两张桌子,一张是城市的,一张是省的?然后,
省.id
将是
主键
外键
城市(id)
(因为所有省份也都是城市)。您的
是省
则只需在
表中搜索即可。@ypercube感谢这将是一个很好的解决方案(即使我更喜欢将
id
保留为自动递增字段,并在
表中添加一个
城市
属性作为外键).因此,您将城市和省份合并在一个表中,并希望使用一个标志来区分这两个城市和省份?这种结构有什么特别的原因吗?是的,@muistoshort有点意思。您的基本设计可能还有改进的余地。@muistooshort是的,为什么您认为这是错误的?看我的编辑…格雷莫,@mu_是_太短的意思(我想):你为什么没有两张桌子,一张是城市的,一张是省的?然后,
省.id
将是
主键
外键
城市(id)
(因为所有省份也都是城市)。您的
是省
则只需在
表中搜索即可。@ypercube感谢这将是一个很好的解决方案(即使我更喜欢将
id
保留为自动递增字段,并在
表中添加一个
城市
属性作为外键).但是您可以用视图和FK伪造检查约束吗?还是我误解了这个问题?@muistoshort:我不太明白。也许我遗漏了什么?我在标题中看到了“约束”,也许我读得太多了。我承认我对这个问题和模式有点困惑。@muistooshort:我的理解是标题、正文和标签中的术语有点不对劲。如果他知道所有正确的术语,很可能他不会问这个问题。所以我给出了我最好的猜测,我们将看看它是否合适@欧文:一个不平衡的分布是我对这个问题的期望;城市可能比省份多得多。但是你能用视图和FK来伪造支票约束吗?还是我误解了这个问题?@muistoshort:我不太明白。也许我遗漏了什么?我在标题中看到了“约束”,也许我读得太多了。我承认我对这个问题和模式有点困惑。@muistooshort:我的理解是标题、正文和标签中的术语有点不对劲。如果他知道所有正确的术语,很可能他不会问这个问题。所以我给出了我最好的猜测,我们将看看它是否合适@欧文:一个不平衡的分布是我对这个问题的期望;城市可能比省份多得多。