如何在数据库和编码中处理硬编码的东西

时间:2012-03-23 09:58:29

标签: php mysql

有两种语言和课程(基于语言)在两个表中定义。在课程表中使用语言表参考来将课程与特定语言相关联。我还有一个笔记表,其中包含特定课程的内容说明以及与课程表相关的内容。现在我有两个问题。

  1. 现在在编码方面,我需要针对西班牙语采取一些具体行动。因此,我应该如何处理这个问题,因为用户会输入语言,我们不会对西班牙语ID有所了解。如果我使用文本(语言名称),那么每次我需要从语言表中获取西班牙语的ID,然后从课程表中获取与此相关的所有课程。

  2. 假设西班牙语注释存储在四个单独的部分中,而其他注释只有一个部分,因此我应该使用具有四列的相同表(每个部分一个)或使用两个表(注释和spanish_notes)。使用以前的方式,将留下三列空白用于其他语言注释。我认为这不好。

2 个答案:

答案 0 :(得分:0)

关于多种语言的第一个问题的一个快速解决方案是使用语言代码,例如'en','es','fr'等。例如,在language表中,您可以同时使用{{1}但是在您的内容表中,您可以拥有带代码的FK。所以你可以得到这个郎。来自请求id, code属性的代码。或其他地方。

对于标准化方面的第二个问题,最好有单独的西班牙语注释表。由于诸如冗余和依赖性问题等诸多原因,它更好。

编辑:PS。您还可以查看来自here的语言代码和来自here的HTTP接受语言。

答案 1 :(得分:0)

一些输入:

  1. 有两种方法可以做到这一点:

    一个。当用户输入语言时,请使用SELECT下拉框来接受用户输入。对于每个SELECT选项,您可以将语言名称设置为文本和语言ID作为值。这样您就会将语言ID知道为

    湾您可以在“语言”和“课程”表之间使用MySQL INNER JOIN,例如:

    SELECT *
    FROM `language` `l`
    INNER JOIN `courses` `c` ON `l`.`language_id` = `c`.`language_id`
    WHERE `l`.`language_name` = `spanish`;
    
  2. 我认为可以保留单个表格中所有部分的所有注释。因此,对于仅包含西班牙语注释的其他3列,您可以将它们设置为接受NULL值

  3. 希望它有所帮助。