문장 table

text: I have pain in leg, reading: 나는 다리가 아프다 이런 문장과 발음들이 들어있음


단어table

word      reading 

leg                다리

foot                다리

bridge            다리

stomach        배

belly                배

등등...            등등..(한개짜리도 많음)


여기서 만들고 싶은건 "배가 아프다" 가 주어졌을 때 보기엔 1stomach  2belly   3abdoman 이런식으로 주어진 후 답인 1 을 찾는 학습 프로그램임


---------------------------------------


이 요구사항에서 원하는 기능은 다음과 같다.


기능 1. 문장에서 쓰인 단어 중 발음이 같은 것을 찾기. 즉 문장 "배가 아프다"에서 발음 "배"를,

발음 "배"로 "stomach", "belly", "abdomen"를 찾는 기능

기능 2. 문장에서 쓰인 단어를 찾기. 즉 "배가 아프다"라는 문장으로 단어 "stomach"를 찾는 기능


글쓴이가 설계한 테이블에는 문제가 있다.

글쓴이가 설계한 테이블에서 이 두 기능을 SQL로 구현하려면 문자열 연산을 해야 하므로 구현이 어렵고 비효율적이다.


대신 테이블에 포함관계를 나타내야 한다. 필요한 테이블은 다음 여섯개이다.


테이블 1. 문장

테이블 2. 단어

테이블 3. 발음

테이블 4. 문장-단어 포함관계

테이블 5. 문장-발음 포함관계

테이블 6. 단어-발음 대응관계


요구사항의 기능 1을 테이블 1, 5, 6을 JOIN하여 계산해 얻을 수 있다.

요구사항의 기능 2를 테이블 1, 4를 JOIN하여 얻을 수 있다.