Я ищу лучшее решение для моего ниже требования.
Я должен хранить любимую вещь пользователя, как —
- Фильмы
- название
- Тип // Вроде научная фантастика, триллер, комедия, романтика
- URL [если есть]
- Музыка
- название
- Тип
- URL [если есть]
- Кухня
- название
- Тип
- URL [если есть]
- Спортивный
- название
- Тип
- URL [если есть]
так далее.,
Этот список любимых может расти больше & Для каждого Фаворита.
Эти столбцы выше будут для каждого любимого предмета. Мои текущие решения — это создание таблицы для каждой любимой вещи, например, [Любимые фильмы, Любимые виды спорта и т. Д.]. Но так как эти любимые элементы могут увеличиваться, и я не хочу создавать еще одну таблицу для этого снова из MySQL.
Итак, я ищу решение, как, Создание таблицы с именем просто, «избранное», с колонкой: —
- Название.
- Ссылка на страницу.
- Тип.
Эти названия могут быть «фильмы», «книги» и т. Д., И внутри каждого «фильма» или «книги» будут все данные. И эти данные будут связаны с другим пользователем.
Итак, мне нужна помощь в разработке схемы таблицы с отношением, создав меньше таблицы.
Язык программирования, я использую: —
Вы можете создать мастер-таблицу tbl_favoritemaster
хранить список любимых предметов (например, фильмы, книги и т. д.) и с дочерним столом tbl_favoritedetail
хранить любимые вещи пользователя (например, подробные сведения о фильме пользователя, подробные сведения о книгах пользователя и т. д.). Используя эту структуру, вы не обязаны создавать больше таблиц для всего списка избранных элементов.
1. tbl_favoritemaster
Column List: favoriteId (PK), favoriteName
Data:
| favoriteId | favoriteName |
| 1 | Movie |
| 2 | Book |
2. tbl_favoritedetail
Column List: Id (PK), favoriteId (Reference to tbl_favoritesmaster), Name, Type, URL
Data:
| Id | favoriteId | Name | Type | URL |
| 1 | 1 | M1 | T1 | URL1 |
| 1 | 2 | B1 | T2 | URL2 |
То, как я бы подошел к этому.
______________________________________________________________
| UniqueID | FavouriteID | Data | Name | Page Link | Type |
| Int(11) | Int(11) | Blob | varchar | Varchar | Int? |
______________________________________________________________
Второй стол
___________________________
| UniqueID | FavouritName |
| INT(11) | VarChar |
___________________________
Создайте внешний ключ между таблицей 2 UniqueID и таблицей 1 FavouritID
при доступе через PHP я сам использую этот набор функций
function RDataLink($field, $table, $current=""){
accessDB();
$QTable=mysql_query("SHOW CREATE TABLE $table");
$Table=mysql_result($QTable,0,1);
exitDB();
// CONSTRAINT `jobSeeker_ibfk_1` FOREIGN KEY (`location`) REFERENCES `24_location` (`UID`)
$x=preg_match_all('/FOREIGN[^(]+.[^(]+[^)]+./',$Table,$matches);
foreach ($matches as $array){
foreach ($array as $value){
if(preg_match("/(?<=FOREIGN\sKEY.{3})$field/",$value)){
if (preg_match("/(?<=REFERENCES[^`].)[^`]+/",$value,$ForeignTable)){
accessDB();
$Qrows=mysql_query("SELECT * FROM ".$ForeignTable[0]);
exitDB();
$options="<select name=\"$field\">";
while ($rows=mysql_fetch_array($Qrows,MYSQL_ASSOC)){
$options.="<option value=\"".$rows['UID']."\"".($current==$rows['UID'] ? "selected" : "") .">".$rows['name']."</option>";
}
$options.="</select>";
}
}
}
}
if(!$x){
return false;
}
else {
return $options;
}
}
function RQuery($field,$table,$current){
accessDB();
$QTable=mysql_query("SHOW CREATE TABLE $table");
$Table=mysql_result($QTable,0,1);
exitDB();
$x=preg_match_all('/FOREIGN[^(]+.[^(]+[^)]+./',$Table,$matches);
foreach ($matches as $array){
foreach ($array as $value){
if(preg_match("/(?<=FOREIGN\sKEY.{3})$field/",$value)){
if (preg_match("/(?<=REFERENCES[^`].)[^`]+/",$value,$ForeignTable)){
accessDB();
$Qrow=mysql_query("SELECT name FROM ".$ForeignTable[0]." WHERE UID='$current'");
return mysql_result($Qrow,0);
exitDB();
}
}
}
}
}
Может потребоваться посмотреть, чтобы применить к вашей ситуации. но я надеюсь, что это полезно
Поскольку фильмы, музыка … могут иметь разные свойства, базовая таблица для благоприятных сущностей может служить: