2011-03-14 3 views
1

웹 사이트를 만들고 php와 mysql을 처음 사용하고 있습니다. 나는 오늘 아침에 할 수있는만큼 책을 읽었으며, 등록과 로그인이 모두 작동하고 사용자가 콘텐츠를 제출하는 데 사용할 수있는 양식을 가지고 있습니다.PHP와 MySQL을 사용하여 데이터베이스에 여러 개의 긴 텍스트를 저장할 때의 고려 사항

제 질문은 사용자가 제출 한 콘텐츠를 어떻게 저장해야하는지입니다. 콘텐츠는 기본적으로 기사가됩니다. 현재 로선 이름, ID 및 비밀번호를 저장하는 모든 사용자에 대한 데이터베이스를 보유하고 있지만 계정을 만들 때마다 제출 한 기사를 저장하기 위해 새 데이터베이스를 생성합니다. 이 문제가 있습니까? 이 시점에서 기사를 검색 할 필요는 없지만 기사의 텍스트, 기사가 속하는 카테고리 및 출판 된 시간을 저장하고 싶습니다.

나쁜 아이디어에 서명하는 모든 사용자에 대해 새로운 데이터베이스를 만들고 있습니까? 또한, 나는 메모리 문제에 대해 궁금해하고있었습니다. 서버 하드 드라이브 공간을 가득 채우는이 모든 내용에 관해서 제가 취해야 할 실질적인 고려 사항이 있습니까?

답변

2

데이터베이스를 사용할 때 가장 중요한 관심사는 SQL Injection입니다. 매개 변수화 된 쿼리를 사용하거나 모든 데이터를 이스케이프 처리하십시오. 또한 users 테이블에는 일반 텍스트 비밀번호가 저장되지 않습니다. 해시와 소금을 사용하십시오.

각 사용자에 대해 새 데이터베이스를 만드는 대신 테이블 사용자 (ID 필드 포함)와 사용자 데이터베이스가있는 기사 테이블에서 동일한 데이터베이스를 사용합니다. 이것은 각 기사의 저자가 누구인지 알기에 충분해야합니다.

+0

나는 당신의 대답을 거의 놓쳤다. 짧고 너무 요점. 고마워. – Championcake

1

모든 사용자에 대해 새 데이터베이스를 만드는 것은 관계형 데이터베이스의 목적을 무시하기 때문에 가능한 모든 시나리오에서 잘못된 접근법입니다.

(해야 할 일은) 기사 (제목, 내용 등)가 포함 된 집필 테이블과 사용자 데이터가 포함 된 사용자 테이블을 만드는 것입니다. 데이터 모델에 따라 모든 기사 (외래 키)에 대해 db 행에 작성자 데이터를 저장하거나 단일 아티클에 여러 작성자가있을 수있는 경우 별도의 테이블에 연결 (관계)을 저장할 수 있습니다.

+0

고마워요. 이것은 아마도 내가 어떻게 끝내는 지 알 것입니다. 이 시점에서 필자는 반드시 데이터를 검색 할 필요는 없지만 필요가 발생하면 그렇게 할 수 있습니다. 이것은 또 다른 질문을 제기합니다 - 데이터베이스가 특정 어구에 대한 기사를 효율적으로 검색하기에는 어느 시점에서 너무 커지게됩니까? – Championcake

+0

그 질문은 정말 대답하기가 어렵습니다. 클라우드 컴퓨팅, 저렴한 하드웨어, 사실상 무한한 확장을위한 노하우 및 도구를 쉽게 이용할 수있는 오늘날 주요한 제약은 돈입니다. 어쨌든 당신은 거대한 청중을 끌어들일 수있는 엄청난 무언가를 만들려고하지 않는 한 그러한 한계를 두려워하지 말아야 할 것입니다. 그러나 예산은 매우 제한적이며 그렇게 남을 것입니다. –

+0

좋은 답변입니다. 감사. – Championcake

2

나는 5 년 동안 CMS 독점 개발자 였으므로, 나는이 같은 농구를 뛰어 넘었습니다.

데이터베이스 이름을 정규화하거나 다중 연결 전환을 처리 할 필요가 없다면 솔루션을 사용해도됩니다. 우리 회사는 매우 복잡한 응용 프로그램을 위해이 작업을 수행하지만 연결이 끊어 지거나 연결 오류가 자주 발생하는 것은 불편하고 성가시다는 것을 언급해야합니다.

저는 개인적으로 하나의 데이터베이스 만 사용하고 각 항목에 사용자 또는 회사 ID 필드를 추가하는 것을 선호합니다. 그런 식으로, 어떤 이유로 내가 한 계정에서 다음 계정으로 모으고 싶다면, 그것은 한 조각의 케이크입니다. DB를 검색하려고 시도하는 것은 전혀 재미있는 일이 아닐 것입니다. 주요 콘텐츠 필드 (본문, 내용 등)는 거의 항상 MySQL 텍스트 필드로 필드 실이 떨어지는 것을 방지합니다. 삽입 할 때 SQL 주입을 피하기 위해 일종의 데이터 정제를 수행해야합니다. 일반적으로 Mysql_real_escape_string이 트릭을 수행합니다.

매우 많은 인기 사이트를 성장시키지 않으면 공간적으로 문제가 발생하지 않습니다. 하나의 작은 서버에 수백 개의 중간 크기의 CMS를 아무 문제없이 실행했습니다.

+0

감사합니다. 데이터베이스 이름과 연결 전환 문제의 자격은 내가 막으려 고하는 것입니다. SQL 주입에 관한 비트 또한 도움이된다. 나는 그것에 대해 걱정했다. – Championcake

관련 문제