如何为一个可以与自身建立一对多关系的实体构建一个表?具体来说,我正在开发一个跟踪动物繁殖的应用程序.每只动物都有一个ID; 它还有一个父亲ID和一个女性ID.因此,从父系或贵妇到后代可以有一对多.我会倾向于这样的事情:
ID INT NOT NULL PRIMARY KEY
SIRE_ID INT
DAME_ID INT
Run Code Online (Sandbox Code Playgroud)
并且为购买并添加到种畜中的那些动物记录空值,并在表格中记录其余的动物ID.
所以:
这可能最好通过两个表格建模吗?我指的是动物的一张桌子和一张单独表格,表示亲属关系,例如:
动物
ID INT NOT NOT PRIMARY KEY
亲属
ID INT NOT NOT PRIMARY KEY FOREIGN KEY
SIRE_ID INT PRIMARY KEY FOREIGN KEY
DAME_ID INT PRIMARY KEY FOREIGN KEY
我为上述事件道歉:我的SQL生锈了.我希望它能传达我正在思考的东西.
这是对以下内容的跟进:
MySQL - 是否可以获取层次结构中的所有子项?
我有一个任意深度的邻接列表模型表(我可以将它转换为嵌套集模型.
我阅读了有关如何使用嵌套集模型的MySQL数据,尽管它似乎变得越来越复杂并且非常复杂,无法执行插入,更新和删除等基本功能.
另一篇博客展示了如何使用具有邻接列表模型的触发器系统来保持将每个对象与其祖先相关联的祖先表.
现在我需要能够返回给定节点的所有子节点的列表,以更改或删除它们.这种层次结构一旦创建就不会一直在变化,但会有大量的层次结构.
我看到的三种方法是:
创建了一个存储过程,它将执行一个返回所有子节点的递归查询.
转换为嵌套集模型,这需要进入复杂性并可能创建一个存储过程来添加,编辑和删除.
在插入/删除触发器上创建上述Ancestor Table以处理所有数据.
如果还有其他方法我没有探索,请告诉我,我会更新此列表.
假设我有一个由用户组成的预订数据库:
user_id
fname
lname
Run Code Online (Sandbox Code Playgroud)
和他们的门票
ticket_id
user_id
flight_no
Run Code Online (Sandbox Code Playgroud)
和相关的航班
flight_no
airline
departure_time
arrival_time
Run Code Online (Sandbox Code Playgroud)
移动此Google AppEngine需要更改哪些内容?
我知道AppEngine 不允许加入.
这是否意味着我的桌子应该成为一片混合在一起的大片?
预订:
user_id
fname
lname
ticket_id
flight_no
airline
departure_time
arrival_time
Run Code Online (Sandbox Code Playgroud)
换句话说,我的所有查询现在都针对同一个表运行?
我需要建议表结构.
我需要动态创建菜单.
将有超过3个菜单.
一些菜单将具有多级结构.
结构化菜单表的最佳方法是什么?
请告诉我您动态生成菜单的经验或常见做法.
我是SQL的新手,在创建表结构时遇到问题.
我想创建一个表,四列- ,,id
和.问题是,这是给我在MySQL的错误,我想是因为词和也是数据类型的名称,并在SQL中使用因此MySQL越来越困惑什么我的列名应为或不认识的名字,我的另一个术语给出的是实名.有没有什么方法可以解决这个问题,以获得我想要的列名称,而不必将列调用其他内容,然后在创建后手动更改它们?text
date
replace
TEXT
DATE
REPLACE
这是我的SQL:
CREATE TABLE message (
id INT UNIQUE AUTO_INCREMENT NOT NULL,
text TEXT,
date INT,
replace INT DEFAULT 0
);
Run Code Online (Sandbox Code Playgroud)
而我得到的错误:
#1064 - 您的SQL语法有错误; 检查与MySQL服务器版本对应的手册,以便在第5行的'replace INT DEFAULT 0''附近使用正确的语法
CREATE TABLE message(
id INT UNIQUE AUTO_INCREMENT NOT NULL ,
TEXT TEXT,
DATE INT,
REPLACE INT DEFAULT 0
);
Run Code Online (Sandbox Code Playgroud)