영수증을 데이터베이스에 저장하고 가계부적인 느낌으로 하고 싶은 그 2 테이블 작성

안녕하세요.
날짜는 5월 8일이 되어, GW는 끝을 맞이했네요.
올해는 특별히 외출할 수 없었습니다.
내년은 어딘가 여행에 가고 싶은 것입니다.

지난번은 데이터베이스 설계? 했습니다.
이번에는 실제로 테이블을 만들어 보려고 생각합니다.
잘 부탁드립니다!

테이블 상세 결정



전회에서 큰 프레임은 만들었습니다만, 컬럼의 이름이나 형태는 아직 결정하지 않았습니다.
우선은 거기에서 결정해 가려고 생각합니다.

receipt




열 이름
금형
NULL 권한
초기값
기본 키


id
uint
안돼
auto_increment
그래

payment_date
timestamp
안돼
0
다르다

store_id
uint
안돼
1
다르다

payment_amount
uint
안돼
아니
다르다

payment_type_id
uint
안돼
1
다르다


store




열 이름
금형
NULL 권한
초기값
기본 키


id
uint
안돼
auto_increment
그래

store_name_id
uint
안돼
1
다르다

branch_store_name_id
uint
안돼
1
다르다


store_name




열 이름
금형
NULL 권한
초기값
기본 키


id
uint
안돼
auto_increment
그래

store_name
varchar(255)
안돼
아니
다르다


branch_store_name




열 이름
금형
NULL 권한
초기값
기본 키


id
uint
안돼
auto_increment
그래

branch_store_name
varchar(255)
안돼
아니
다르다


item_quantity




열 이름
금형
NULL 권한
초기값
기본 키


receipt_id
uint
안돼
아니
다르다

item_id
uint
안돼
아니
다르다

quantity
uint
안돼
1
다르다


item_price




열 이름
금형
NULL 권한
초기값
기본 키


receipt_id
uint
안돼
아니
다르다

item_id
uint
안돼
아니
다르다

price
uint
안돼
아니
다르다


item




열 이름
금형
NULL 권한
초기값
기본 키


id
uint
안돼
auto_increment
그래

item_name
varchar(255)
안돼
아니
다르다


payment_type




열 이름
금형
NULL 권한
초기값
기본 키


id
uint
안돼
auto_increment
그래

payment_type
varchar(255)
안돼
아니
다르다


대체로 NULL은 버렸습니다.
구구리면서 자력으로 생각했기 때문에, 이상한 부분이 있을지도입니다.
(auto_increment의 시작은 1부터였어요. 처음에 초기값을 0으로 해 실패했습니다.)

테이블 만들기



상세가 정해졌으므로, 실제로 만들어 보겠습니다.
create database household_accounts;
use household_accounts;

create table receipt (
  id int unsigned not null auto_increment primary key,
  payment_date timestamp not null default 0,
  store_id int unsigned not null default 1,
  payment_amount int unsigned not null,
  payment_type_id int unsigned not null default 1
);

create table store (
  id int unsigned not null auto_increment primary key,
  store_name_id int unsigned not null default 1,
  branch_store_name_id int unsigned not null default 1
);

create table store_name (
  id int unsigned not null auto_increment primary key,
  store_name varchar(255) not null
);

create table branch_store_name (
  id int unsigned not null auto_increment primary key,
  branch_store_name varchar(255) not null
);

create table item_quantity (
  receipt_id int unsigned not null,
  item_id int unsigned not null,
  quantity int unsigned not null default 1
);

create table item_price (
  receipt_id int unsigned not null,
  item_id int unsigned not null,
  price int unsigned not null
);

create table item (
  id int unsigned not null auto_increment primary key,
  item_name varchar(255) not null
);

create table payment_type (
  id int unsigned not null auto_increment primary key,
  payment_type varchar(255) not null
);

(뒤에서 몇 번이나 실수를 다시 쓰고 있기 때문에, 잘못된 부분이있을지도 모릅니다.)
이것으로 굵은 테이블들이 생겼을 것입니다.

범용 데이터 넣기



가게 이름이 가게 이름을 모르는 경우에 대한 레코드를 넣을 때입니다.
insert into store_name (id, store_name) values (1, '不明');
insert into branch_store_name (id, branch_store_name) values (1, '不明');
insert into store (id, store_name_id, branch_store_name_id )values (1, 1, 1);

이것으로, 가게명이 불명의 경우는 receipt의 store_id에 1 넣으면 괜찮네요.

상품명도 없거나 모르는 경우용으로 불명을 넣을 때입니다.
insert into item values (1, '不明');

지불 방법은 일단 지금 생각해 낸다, 현금, 신용 카드, suica, iD를 넣을 때입니다.
insert into payment_type (id, payment_type) values
  (1, '現金'),
  (2, 'クレジットカード'),
  (3, 'suica'),
  (4, 'iD');

이번에는 일단 이것으로 끝납니다.

다음 예정



다음은 실제로 영수증의 데이터를 넣고 싶습니다.
하지만 원시 MySQL에서 데이터 입력은 마음이 망가질 것 같아서 뭔가 뭔가 쉽게 넣을 수 있도록하고 싶네요.
뭔가 좋은 방법이 있는지 찾습니다.
그럼 무례합니다.

좋은 웹페이지 즐겨찾기