dannyy1026 写道
建表如
CREATE TABLE TEMPAAA(
ID BIGINT UNSIGNED AUTO_INCREMENT NOT NULL,
NAME VARCHAR(32) BINARY NOT NULL,
CREATORID UNSIGNED,
CONSTRAINT PK_TEMPAAA PRIMARY KEY (ID),
CONSTRAINT FK_CREATORID FOREIGN KEY (CREATORID)
REFERENCES TEMPAAA (ID)
)TYPE=INNODB;
想用CREATORID来表示创建者ID,可是因为ID可以删除,所以必须在删除前维护外键的约束。想过用触发器来替代实现,可触发器无法再更新触发器基表。如果外键加on delete cascade/on update cascade约束,则会出现删除不想删除的记录。
这时候,我在我的项目里还是没要应用自表外键关联,在代码中实现关联。
经过测试,在mysql5.0.X下,表内引用必须添加on delete cascade/on update cascade约束.
官方文档
引用
15.2.6.4.外键约束
注意,InnoDB支持外键在一个表内引用,在这些情况下,子表实际上意味这在表内附属的记录。
那么用代码来关联好,还是表内外键好.在记录需要更改涉及到外部资源的时候, 可以用代码关联, 比如要根据记录来删除文件;在纯粹的表内记录更改的时候,表内外键更合适, 比如删除菜单树上的节点,可以充分利用数据库特性, 但是有时候牵扯到外部资源就需要权衡了.
参考资料:
Mysql数据库表内外键关联的问题
分享到:
相关推荐
MySQL中的内外键是数据库设计中的重要概念,它们用于在不同表格之间建立关联,确保数据的一致性和完整性。外键(Foreign Key)允许一个表格(称为子表或参照表)引用另一个表格(称为父表或主表)的主键,以此来实现...
国内外已有很多在线新闻发布系统,如WordPress、Drupal等,但它们通常需要一定的技术基础才能进行定制和管理。本系统以用户友好和管理员易用为目标,简化操作流程,降低了使用门槛。 1.4 研究内容 本研究主要包括...
- **逻辑设计**:将概念模型转化为具体的数据库表结构,定义字段类型、主键、外键等,构建系统的逻辑模型。 - **物理设计**:根据DBMS的特性,设计存储结构、索引策略,以优化查询性能和存储效率。 - **安全性设计**...
3. 逻辑数据模型(LDM):将CDM转化为更具体的数据表结构,包括字段、数据类型和键(主键、外键)。 4. 物理数据模型(PDM):考虑实际数据库系统的特性,如索引、分区等,优化LDM以提高性能。 5. SQL脚本编写:...
每个表都有明确的字段定义,如会员ID、姓名、联系方式、会员等级、消费金额等,通过外键关联形成数据的一致性和完整性。 四、会员信息管理 会员信息管理模块允许工作人员录入、修改、查询和删除会员信息。这包括...
10. **外键约束**:在CREATE TABLE语句中,FOREIGN KEY关键字用来指定外键,以建立表间关系。 11. **Integer类型**:Integer类型的变量在某些编程语言中可存储的最大整数是32767。 12. **DBMS**:数据库管理系统...
- **建立关键字段**:主键、外键、唯一键等约束条件的设定。 - **CREATETABLE语句**:创建表结构的具体语法。 - **表名**:遵循的命名规则和约定。 - **空值属性**:NULL值的处理和意义。 - **唯一属性**:确保数据...
- 关键概念如主键(Primary Key)、外键(Foreign Key)以及索引(Index)的定义和使用。 - 数据完整性约束(如NOT NULL、UNIQUE等)对于确保数据质量至关重要。 - **SQL总览**: - SQL语言主要分为四类:数据...
用户的特点:本软件的目标用户是那些想要来四川旅游、观光、住宿的国内外用户群。网站的技术人员拥有丰富的HTML、CSS和数据库开发经验。 假定和约束: * 开发场地:宿舍或者机房 * 开发设备:1G内存,2.0GHz主频...
2. 数据库设计:创建相关表并设置主外键关系,以支持系统功能。 3. 前端开发:针对管理端、医生端和用户端分别开发不同的功能模块,如用户管理、疫苗信息管理、预约接种等,同时进行权限分配。 4. 使用Axios进行前端...