Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为动态数据或更好的解决方案创建20个相关表-MySQL_Php_Mysql_Database Design_Relational Database_Database Schema - Fatal编程技术网

Php 为动态数据或更好的解决方案创建20个相关表-MySQL

Php 为动态数据或更好的解决方案创建20个相关表-MySQL,php,mysql,database-design,relational-database,database-schema,Php,Mysql,Database Design,Relational Database,Database Schema,我正在寻找更好的解决方案,以满足我的以下要求 我必须存储用户最喜欢的东西,如- 电影 名字 类型//喜欢科幻、惊悚、喜剧、浪漫 网址[如有的话] 音乐 名字 类型 网址[如有的话] 烹饪 名字 类型 网址[如有的话] 运动 名字 类型 网址[如有的话] 等等, 对于每个收藏夹,此收藏夹列表可以增长更多 以上各栏将针对每个喜爱的项目。我目前的解决方案是为每个喜爱的事物创建表格,如[喜爱的电影、喜爱的运动等]。但是,由于这些最喜欢的项目可能会增加,我不想再从MySQL中为此创建另一个表 因此

我正在寻找更好的解决方案,以满足我的以下要求

我必须存储用户最喜欢的东西,如-

  • 电影
  • 名字
  • 类型//喜欢科幻、惊悚、喜剧、浪漫
  • 网址[如有的话]
  • 音乐
  • 名字
  • 类型
  • 网址[如有的话]
  • 烹饪
  • 名字
  • 类型
  • 网址[如有的话]
  • 运动
  • 名字
  • 类型
  • 网址[如有的话]
  • 等等,

    对于每个收藏夹,此收藏夹列表可以增长更多

    以上各栏将针对每个喜爱的项目。我目前的解决方案是为每个喜爱的事物创建表格,如[喜爱的电影、喜爱的运动等]。但是,由于这些最喜欢的项目可能会增加,我不想再从MySQL中为此创建另一个表

    因此,我正在寻找类似这样的解决方案,创建名为“favorite”的表,列为:-

  • 名字
  • 页面链接
  • 类型
  • 这些名称可以是“电影”、“书籍”等,在每个“电影”或“书籍”中,都会包含所有数据。这些数据将链接到不同的用户

    所以,我需要帮助,通过创建更少的表来设计具有关系的表的模式

    编程语言,我正在使用:-

  • 数据库MySQL/
  • 服务器端的PHP

  • 我会用这种方式来处理这个问题

    ______________________________________________________________
    | UniqueID | FavouriteID | Data | Name    | Page Link | Type |
    | Int(11)  | Int(11)     | Blob | varchar | Varchar   | Int? |
    ______________________________________________________________
    
    第二桌

    ___________________________
    | UniqueID | FavouritName |
    | INT(11)  | VarChar      |
    ___________________________
    
    在表2 UniqueID和表1 FavoritId之间创建外键

    当通过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();
                }
            }
        }
    }
    
    }
    
    函数RDataLink($field,$table,$current=”“){
    accessDB();
    $QTable=mysql_查询(“显示创建表$TABLE”);
    $Table=mysql\u结果($QTable,0,1);
    exitDB();
    //约束'jobseker'u ibfk'u 1'外键('location`)引用'24'u location`('UID`)
    $x=preg_match_all('/FOREIGN[^(+.[^(+.]+[^)]+./',$Table,$matches);
    foreach($matches as$array){
    foreach($array作为$value){
    
    如果(preg_match(“/(?您可以创建一个主表
    tbl_favoritemaster
    来存储最喜欢的项目列表(例如电影、书籍等),并使用子表
    tbl_FavoriteMealture
    来存储用户最喜欢的内容(例如用户了解的电影细节、用户了解的书籍细节等)。使用此结构,您无需为所有常用项列表创建更多表

    1.tbl\u favoritemaster

    Column List: favoriteId (PK), favoriteName
    Data: 
    
    | favoriteId | favoriteName |
    |      1     | Movie        |
    |      2     | Book         |
    
    2.待详细说明

    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 |
    

    由于电影、音乐……可能具有不同的属性,因此为有利的实体建立一个基本表可能有以下作用: