0

現在、メインテーブルが 3 つ animal, food and medicineあります。

動物テーブルからテーブルを取得します:

  1. 種(猫、犬、鳥、魚など)
  2. サイズ(小、中、大、大...)
  3. 年齢(子犬、ヤングアダルト、オールド...)
  4. カラー(ブラウン、ブラック、グレー…)

動物に与えた薬や食べ物の有用なデータを保存したいのですが、これらのデータをリンクする方法がわかりません。次のアプローチは受け入れられるか、または何を追加または削除する必要がありますか?

私の主な質問複合キーの正確性とクエリでデータを取得する方法...

動物

idAn SEX AGE COMMENT           SPECIES color  HAIR   SIZE
----------------------------------------------------------
1     M   1  without ear         1      1     LONG    1
2     F   2  blue eyed all gray  2      2     short   1

種族

id name
-------
1  dog
2  cat
3  bird
4  fish
5  reptile
6  mouse  
7  other

id name
-------
1 puppy
2 young
3 adult
4 old

id  name
--------
1  black
2  gray
3  gold
4  green
5  red
6  brown

サイズ

id  name
--------
1  small
2  medium
3  large
4  big

食物

id name      label      
-------------------
1  sardine     so 
2  croquettes  dogchauw   
3  chicken     sirw
4  whiskas     whiskas  

食べ物_動物

idFood  idAnimal   quantity timesPerDay lastFood    LastWater
----------------------------------------------------------------------
2             1    70gr      3        12-12-12   12-12-12  
3             2    80gr      4        12-11-12   12-11-12

薬の場合は上記のようなものです。

MySQLで何ができるか、またはそれをどのように使用するか

私は次のようなものから始めていました

CREATE TABLE IF NOT EXISTS ANIMAL(
    idAn    int(3) NOT NULL AUTO_INCREMENT,
    sex     int(2) NOT NULL ,
    age     int(2) NOT NULL ,
    comment varchar(50)  ,                  
        species int(2) NOT NULL , 
    color   int(2) NOT NULL ,
        hair    varchar(50)     ,                   
        size    int(2) NOT NULL ,
    PRIMARY KEY (idAn)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0;
4

1 に答える 1

0
/* Create a table with 2 fields, Entity and Name. Primary key is BOTH fields (as we know that Entity->Name will be a unique value) */
CREATE TABLE master_lookup (
  Entity nvarchar(10) not null,
  Name nvarchar(20) not null,
  primary key(Entity, Name)
);

/* Insert some data! */
INSERT INTO master_lookup VALUES 
('Species', 'Dog'),
('Species', 'Cat'), 
('Species', 'Bird'),
('Color', 'Black'),
('Color', 'Brown');

/* Let's have a look... */
SELECT * FROM master_lookup;
 Entity  | Name
----------------
 Species | Dog
 Species | Cat
 Species | Bird
 Color   | Black
 Color   | Brown

/* Et voila. One lookup table, ID numbers need not apply. Let's assume you have a form that will populate the Animal table with a list of species for the user to pick from. The source of the list is easy: */
SELECT Name FROM master_lookup WHERE Entity = 'Species';

/* Your INSERT query into Animal will look like this (let's say they're entering a small brown long-haired dog): */
INSERT INTO Animal ('M', 11, 'a comment', 'Dog', 'Brown', 'Long', 'Small');

/* And now when you SELECT from the animal table... */
SELECT * FROM Animal

idAn SEX AGE COMMENT           SPECIES color  HAIR   SIZE
----------------------------------------------------------
1     M   11  a comment         Dog    Brown  Long   Small

/* Look ma! No joins! Which means your query is much simpler and much faster! Yay! */
于 2014-11-25T05:00:56.873 に答える