mysql - 外键是否必要?
问题描述
假设我有四个表:
Table 1 - Users - id, name
Table 2 - Models - id, user_id, name
Table 3 - Types - id, user_id, name
Table 4 - Cars - id, user_id, model_id, brand_id
从技术上讲,我不需要表 Cars 中的“user_id”列。
使用 'user_id' fk 是一个好习惯吗?冗余?当然,它使编程更容易......
解决方案
您真正不需要的是anduser_id
中的列。
汽车型号和汽车类型与用户没有直接关系。
这种设计很有意义:Models
Types
Table 1 - Users - id, name
Table 2 - Models - id, name
Table 3 - Types - id, name
Table 4 - Cars - id, user_id, model_id, type_id
如果每辆车仅与 1 个用户相关,但如果它可以与更多用户相关,那么您需要另一个表:
Table 1 - Users - id, name
Table 2 - Models - id, name
Table 3 - Types - id, name
Table 4 - Cars - id, model_id, type_id
Table 5 - CarsUsers - car_id, user_id
推荐阅读
- python-3.x - KeyError: '[...] not in index' 当训练/测试集手动拆分成两个文件时发生
- scala - 如何使用列索引重命名重复的列?
- apache - Dockerfile 中不支持 Docker ADD 和 COPY
- swift - 在多对多关系上添加元素
- python - 使用 excel 表中的信息在 postgresql 上创建表
- node.js - 如何根据 aws cognito 中的特殊条件对用户进行身份验证
- class - Dart - 创建一个类来扩展 List
功能 - odbc - 此数据库不支持 Sql api 错误
- android - 在android应用程序中垂直显示文本(带有ruby注释的Japanies字符)
- c++ - VS-2019 的编译错误