【发布时间】:2016-06-27 10:05:14
【问题描述】:
我还是编程新手,因为这是我在编程领域的第一年。我在这里读过一些关于设计家谱的其他帖子,但我仍然不明白一些细节,所以我需要你的帮助。顺便说一句,我使用 PHP
这是我的简化版表格
// family leader
<div id="family_leader">
<input type="text" name="name[]">
<input type="text" name="ic[]"> // ic is the same like SSN
</div>
// family member
// here input wife or child info
// i use javascript to clone the div so user can add how many family member they have.
<div id="family_member">
<input type="text" name="name[]">
<input type="number" name="ic[]">
<input type="text" name="relationship[]">
</div>
我正在考虑以这种方式制作数据库
第一张桌子是这样的
用户表
+--------+--------------+--------------+
| id | name | ic |
+--------+--------------+--------------+
| id1 | John | 9357906268 |
+--------+--------------+--------------+
| id2 | Josh | 9357222228 |
+--------+--------------+--------------+
我会为他们的关系准备另一张桌子
关系表
- 没有人是乔希的父亲/母亲
- 乔希是约翰的父亲
表格将如下所示
+-------------+--------------+--------------+
| owner_id | family_id | relationship |
+-------------+--------------+--------------+
| ic1/id1 | ic2/id2 | father |
+-------------+--------------+--------------+
| ic2/id2 | ic1/id1 | child |
+-------------+--------------+--------------+
如果是单亲父母,我会这样做,并且我想让这些数据在个人资料中可见
好像
丈夫有 1 个妻子 父亲有 1 个或多个孩子 孩子有1个父亲
到目前为止,这就是我得到的
家庭班
<?php
/**
* this is my family class
*/
class Family
{
function __construct(argument)
{
# database construct here
}
public function getUser($_POST)
{
foreach ($_POST['name'] as $row) {
# this is how im going to insert the data of user into user table
$sql1="INSERT INTO User ( name, ic) values (" $_POST[name][i]", "$_POST[ic][i]")" // e.g John, 9357906268
}
}
public function getRelation($_POST)
{
$sql2="INSERT INTO Relationship ( owner_id, family_id, relationship) values ( $_POST['ic'][i], $_POST['ic'][1], $_POST['relationship'][i])"
/**
* this is where my problem reside
* i don't know how to make this function
*/
}
}
那么如何正确插入第二张表?
我也在考虑在 getRelation 中做一个 switch 案例
switch ($_POST['relation']) {
case 'father':
// in here is if Josh is a father to John then John is a child to Josh.
break;
case 'mother':
# code...
break;
// ... more case
default:
# code...
break;
}
或者在类中创建更多功能?
public function isFather($value='')
{
# code...
}
public function isMother($value='')
{
#
}
问题是我不知道如何做函数内部的逻辑或 switch case 来确定用户的关系。
这是数据库设计和OOP的正确方法吗?
感谢您的宝贵时间。
【问题讨论】: