标签: table-structure

一对多对自己

如何为一个可以与自身建立一对多关系的实体构建一个表?具体来说,我正在开发一个跟踪动物繁殖的应用程序.每只动物都有一个ID; 它还有一个父亲ID和一个女性ID.因此,从父系或贵妇到后代可以有一对多.我会倾向于这样的事情:

ID INT NOT NULL PRIMARY KEY
SIRE_ID INT 
DAME_ID INT
Run Code Online (Sandbox Code Playgroud)

并且为购买并添加到种畜中的那些动物记录空值,并在表格中记录其余的动物ID.

所以:

  1. 有人能指出我讨论建模这种关系的文章/网页吗?
  2. ID应该是INT还是某种字符串?INT中的NULL表示动物在数据库中没有父项,但可以使用具有特殊标志值的String来表示相同的事物.
  3. 这可能最好通过两个表格建模吗?我指的是动物的一张桌子和一张单独表格,表示亲属关系,例如:

    动物

    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生锈了.我希望它能传达我正在思考的东西.

database-design data-modeling table-structure

5
推荐指数
1
解决办法
5457
查看次数

MySQL - 处理这种分层数据的最佳方法?

这是对以下内容的跟进:
MySQL - 是否可以获取层次结构中的所有子项?

我有一个任意深度的邻接列表模型表(我可以将它转换为嵌套集模型.

我阅读了有关如何使用嵌套集模型的MySQL数据,尽管它似乎变得越来越复杂并且非常复杂,无法执行插入,更新和删除等基本功能.

另一篇博客展示了如何使用具有邻接列表模型的触发器系统来保持将每个对象与其祖先相关联的祖先表.


现在我需要能够返回给定节点的所有子节点的列表,以更改或删除它们.这种层次结构一旦创建就不会一直在变化,但会有大量的层次结构.

我看到的三种方法是:

  1. 创建了一个存储过程,它将执行一个返回所有子节点的递归查询.

  2. 转换为嵌套集模型,这需要进入复杂性并可能创建一个存储过程来添加,编辑和删除.

  3. 在插入/删除触发器上创建上述Ancestor Table以处理所有数据.

如果还有其他方法我没有探索,请告诉我,我会更新此列表.

mysql table-structure

5
推荐指数
1
解决办法
4186
查看次数

我的表需要对AppEngine的BigTable进行哪些更改?

假设我有一个由用户组成的预订数据库:

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)

换句话说,我的所有查询现在都针对同一个表运行?

sql database google-app-engine bigtable table-structure

4
推荐指数
1
解决办法
681
查看次数

mySQL中菜单的表结构

我需要建议表结构.

我需要动态创建菜单.

将有超过3个菜单.

一些菜单将具有多级结构.

结构化菜单表的最佳方法是什么?

  1. 所有菜单都在一张桌子上
  2. 每个表应该有一个表
  3. 任何其他??

请告诉我您动态生成菜单的经验或常见做法.

php mysql menu table-structure

2
推荐指数
1
解决办法
3569
查看次数

SQL列名与数据类型的名称相同 - 导致错误

我是SQL的新手,在创建表结构时遇到问题.

我想创建一个表,四列- ,,id 和.问题是,这是给我在MySQL的错误,我想是因为词和也是数据类型的名称,并在SQL中使用因此MySQL越来越困惑什么我的列名应为或不认识的名字,我的另一个术语给出的是实名.有没有什么方法可以解决这个问题,以获得我想要的列名称,而不必将列调用其他内容,然后在创建后手动更改它们?textdatereplaceTEXTDATEREPLACE

这是我的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)

mysql sql database table-structure create-table

0
推荐指数
1
解决办法
1129
查看次数