代码之家  ›  专栏  ›  技术社区  ›  cp3

数据库设计概念

  •  0
  • cp3  · 技术社区  · 16 年前

    users         departments     sub-departments
    -------       -------         -------
    id            id              id
    name          name            name
    email
    password
    created
    modified
    
    posts         photos        profiles
    -------       -------       -------
    id            thumbnail     id
    content       large         photo_id
    created       created       user_id
    user_id       profile_id    department_id
    profile_id    id            sub-department_id
    

    users have one department
    users have one sub-department
    users have many posts
    users have one photo
    users have one profile
    

    CakePHP 我的个人资料模型片段如下:

    var $belongsTo = array('User', 'Department', 'Sub_Department', 'Photo')
    var $hasMany = array('Comment');
    

    如果你现在在想“WTF是垃圾吗?”。我就在你身边。这个协会从事脚手架工作。但我不想在真正开始插入逻辑时遇到麻烦。

    我在这一点上有点迷失了。任何帮助都将不胜感激。你会如何实施这一点?

    3 回复  |  直到 16 年前
        1
  •  3
  •   Jonathan Leffler    16 年前

    你说:

    • 用户有一个子部门
    • 用户有很多帖子
    • 用户有一张照片

    在posts表中,为什么要同时记录用户ID和配置文件ID?同样,它为您提供了一个复杂的约束来强制执行,但没有明显的好处。配置文件ID足够;从中你可以找到用户。

        2
  •  2
  •   Abba Bryant    16 年前

    我提供了一个示例模式/图表供您查看。

    有几件事需要注意。Post模型(posts表)有一个字段段塞。使用Sluggable行为来处理在这里为您创建slug。

    部门模型(部门表)有一个名为Department_id的字段 be parent_id,但构建器工具会对此抛出错误。根据需要进行更改。lft、rght和parent_id字段对应于树行为。在部门模型上使用树行为将允许部门任意属于“父”部门。这可以防止您需要sub_departments表,因为子部门实际上是一个将parent_id设置为另一个部门id的部门。

    用户附加的个人资料和照片habtm个人资料,以便您可以为用户附加无限数量的照片。我喜欢保持我的用户模型精简,只使用Auth组件所需的内容。配置文件模型是我保存first_name、last_name、age、city等的地方。

    在照片模型上使用上传行为(MeioUpload)自动处理上传。

    这应该是您修改设计的良好起点。

    http://cakeapp.com/sqldesigners/sql/centro

    密码: 中心

        3
  •  0
  •   powtac    16 年前

    您可以在以下网站上实时测试CakePHP数据库设计概念 CakeApp.com .