【问题标题】:Database Table Path Combinations数据库表路径组合
【发布时间】:2015-06-16 14:55:04
【问题描述】:

我正在设计一个数据库,该数据库将存储使用设备的所有指令视频/文本/音频路径。用户可以选择是否希望指令以视频、文本或音频的形式出现(可以选择 3 个中的任何一个,但必须至少选择 1 个)。用户还将选择一种语言,这将是指令的语言。我想我已经弄清楚了一些表结构。但是,我想如何将所有组合存储到一个表中?

例如,我的一张表具有所有文件路径组合,

path_id      button_text       audio_path       video_path        text_path
1            cbl.txt           null             null              cbl.txt
2            cbl.txt           null             cbl.mp4           null
3            cbl.txt           null             cbl.mp4           cbl.txt
4            cbl.txt           cbl.mp3          null              null
5            cbl.txt           cbl.mp3          null              cbl.txt
6            cbl.txt           cbl.mp3          cbl.mp4           null
7            cbl.txt           cbl.mp3          cbl.mp4           cbl.txt
8            bolt.txt          null             null              bolt.txt
9            bolt.txt          null             bolt.mp4          null
10           bolt.txt          null             bolt.mp4          bolt.txt
11           bolt.txt          bolt.mp3         null              null
12           bolt.txt          bolt.mp3         null              bolt.txt
13           bolt.txt          bolt.mp3         bolt.mp4          null
14           bolt.txt          bolt.mp3         bolt.mp4          bolt.txt

这会考虑到所有不同的组合,因此根据用户选择的设置,他们将返回与正确设置对应的主键。但是,我认为这太多余了,可能效率不高,有什么更好的方法吗?

【问题讨论】:

    标签: mysql database path filenames


    【解决方案1】:

    这样的事情怎么样:

    设备表:

      device_id   device_name
         1          machine1
    

    文件表

      file_id   device_id  file_type  file_path
         1        1           video     d:\videos\v1.mp4
         2        1            text     d:\texts\t1.txt
         3        1            pdf      d:\pdfs\p1.pdf
          ...
    

    或者如果一个文件可以用于多个设备,添加另一个表:

    device_file 表:

       device_id  file_id
          1          1
          1          2
          2          2
    
         ...
    

    您可以删除文件表中的“device_id”列。

    【讨论】:

    • 我认为这种方法可行,但是一旦添加了新设备,file_path 会不会变得多余?如果你保持设备表相同,从文件表中省略 device_id 并创建一个与主键配对的链接表?
    • 如果一个文件可以用于多个设备,则需要另外一张表来存储设备与文件的关系
    猜你喜欢
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多