【问题标题】:Updating Linking Tables更新链接表
【发布时间】:2010-12-02 20:40:00
【问题描述】:

我目前在 PHP 和 MySQL 上运行的 CMS 上添加了一些管理假期出租的功能。

CMS 将属性详细信息存储在几个表中,我正在添加第三个表 (letting_times),其中包含有关人们何时入住该属性的信息。基本功能将允许用户在客人入住时添加新时间、编辑客人入住时间并在客人不再想入住酒店时删除预订。

现在,我能想到的更新属性占用时间的最佳方法是删除 let_times 数据库中包含的所有时间,然后重新插入它们。我能想到的唯一另一种方法是包含表的主键并在存在且具有值的情况下进行更新,否则进行插入,但这不会删除删除的数据行。

有更好的方法吗?

【问题讨论】:

    标签: php mysql database-design data-modeling


    【解决方案1】:

    这是我对LETTING_TIMES 表的推荐:

    • PROPERTY_ID, PK & FK
    • EFFECTIVE_DATE,pk,日期,不为空
    • EXPIRY_DATE,日期,不为空

    将 pk 设置为复合键(PROPERTY_IDEFFECTIVE_DATE)允许您为给定属性拥有多个记录,同时阻止它们在同一天。没有一种简单的方法可以阻止 [sub?]let 重叠,但这将减少必须删除包含在属性中的所有时间并重新添加的情况。

    【讨论】:

    • 这有助于防止出租被重复预订,但我不明白如果取消预订会有什么帮助。例如,一个属性有三个预订。如果取消预订 #2 并添加另一个预订,我无法在不删除所有内容并重新开始的情况下添加新预订并删除已取消的预订。
    • 要处理取消,您删除相应的条目 - 不是所有记录。批发删除是一种糟糕的做法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多