【发布时间】:2018-08-19 09:51:26
【问题描述】:
我对数据库设计相当陌生,可以就如何为学习项目设置架构提出一些建议。这个想法就像 Zork 这样的基于文本的冒险游戏。
获取 Room 数据库表:
class Room(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(64), index=True)
description = db.Column(db.String(512))
north = db.Column(db.Integer, db.ForeignKey('room.id'))
east = db.Column(db.Integer, db.ForeignKey('room.id'))
west = db.Column(db.Integer, db.ForeignKey('room.id'))
south = db.Column(db.Integer, db.ForeignKey('room.id'))
当用户在一个房间里时,他们可以向南、向北等方向移动。这些房间是链接在一起的。我觉得让外键成为表的一部分是错误的方法。我正在使用 postgres 和 sqlalchemy。我觉得有一种方法可以设计这些链接,而无需手动管理房间是否从数据库中删除等。
links_table = db.Table('directions',
db.Column('north_id', db.Integer, db.ForeignKey('room.id')),
db.Column('west_id', db.Integer, db.ForeignKey('room.id')),
db.Column('east_id', db.Integer, db.ForeignKey('room.id')),
db.Column('south_id', db.Integer, db.ForeignKey('room.id')))
这样的事情会是朝着正确方向迈出的一步吗?还是我需要一张north_to_south、south_to_north 的表格?
north_to_south = db.Table('north_to_south',
db.Column('north_id', db.Integer, db.ForeignKey('room.id')),
db.Column('south_id', db.Integer, db.ForeignKey('room.id')))
【问题讨论】:
标签: python database sqlalchemy schema