вы живете нормами 90х, видимо. Вам достаточно. Мне - не достаточно. Я считаю, что на машину надо переваливать как можно больше работы. Но делать это с умом. Если дополнительное поле или таблица позволяет исключить необходимость в сложных запросах - надо добавить хоть десять. Если текстовое поле во второй форме содержит одинаковые текстовые значения и вас это устраивает - меня вот нет. Это вопрос вкуса скорее, чем повод для холивара. Мне больше нравится менять название товара или брать его из одной таблицы. А тут это макароны какие-то. Возможно я слишком тупой для вашей конторы. Придется мне как-то жить самому и без ваших собеседований. Удачи.
Простите, а что, если у вас товар партиями с разной ценой продажи, закупочными ценами, да при етом они еще и на разных складах лежат? 1 запись? Да я Вас умоляю. http://ru.wikipedia.org/wiki/%D0%9D%D0%BE%D1%80%D0%BC%D0%B0 ... 0%BC%D0%B0
1 запись да =) Добавлено спустя 1 минуту 11 секунд: я не понимаю, что у вас такой диссонанс вызывает? то что для партии и склада придется завести по таблице? и что? перестаньте сыпать ссылками на педивикию, я вас прошу. мы же с вами разговариваем.
Ну создадите вы да по таблице, дык а сущностям вы как будете их назначать? Сущность одна, а состояния разные Я соглашусь что можно сделать по разному и как хочешь, вопрос в том, как будет работать не нормализованная бд с гигабайтным размером Кстати так и не понял где вы тут холивар увидели, есть правила проектировки, которые давно за нас придумали. Добавлено спустя 1 минуту 45 секунд: А ссылку я Вам дал на элементарность от которой вы пытаетесь отойти
=) ну и чорт с ними с правилами. IT меняется на глазах. кому эти нормы были важны в 90е мне не очень интересно. По факту я не вижу ни одной проблемы в том что товар описан в одной таблице, партии живут в другой, содержимое складов в третьей. Где вы тут увидели негатив?
Это я уже понял, что на оптимизацию вы не смотрите. То что они в 1 таблице, никто и не спорит. Ок, приведите пожалуйста пример записи: Товар, Цена. Есть 1 товар у которого 2 цены (разные, не важно по каким причинам — это нормально). Как вы его запишите?
не, не смотрю. десктоп с 16 гигами оперативки можно взять сегодня за полтос евро. о чем будем говорить? месить дальше ветхий завет или вы ответите на мои вопросы? Я же с вами ваши же примеры обсуждаю. А вы уже юлите.
Ну вы просто сказали, что вы это запишите в 1 запись, я просто спросил как, нет так нет. И заявление вроде "это все хреня на это не смотри", мягко говоря меня встревожило.
в ту же партию. если товар закупается партиями, то и цена идет на партию. это логично. Но имеет смысл обсуждать предметно при наличии минимального ТЗ. Добавлено спустя 49 секунд: я не вижу сложностей иметь одно описание товара. Если это один товар. Добавлено спустя 23 секунды: я всё еще прошу вас показать какие-либо сложности. в чем затык?
А нет никаких сложностей, просто вы просто игнорите правильную проектировку БД, бог с вами, вы к этому пытаетесь еще кого-то приучить мол все решается деньгами. Поверьте это не так.
верю =) когда у меня посещаемость дойдет до миллиона, я обязательно озадачусь этим вопросом и позвоню лично вам и приглашу на собеседование. Идет? вы мне не смогли НИ ОДНОГО аргумента привести, кроме того, что "так сказано сто лет назад, и так правильно". У вас собственное мнение имеется?
ХМ, я уже сказал, что из бд свалку не надо делать и тем более это советовать другим. Что Вам еще необходимо? Привел общую информацию, не нравится вики, пожалуста: http://dev.mysql.com/doc/refman/5.6/en/data-size.html А вы, кроме того что "это все херня, я решаю все деньгами, ведь процессоры вон какие уже" больше ничего не написали. p.s. давайте девятитысячное
Я вас понял. Аргументации у вас нет. Я спрашиваю вас почему это плохо, а в сказать не можете, кроме как "это не эстетично"? Добавлено спустя 21 секунду: чем это чревато? что плохого будет?
Вы еще и тролль.) Ну а вы то аргументировали — рубли, и вправду аргумент. БД со ссылками работает быстрее, чем с тем же текстом + с избыточными данными и выборку производить по ссылкам и уж тем более, если ссылки проиндексированы. Для того чтобы перейти на ссылочную выборку необходимо максимально отказаться от транзитивных зависимостей (3nf) средствами 2nf, разбиением сущностей, ну и атмомарность (1nf). Поэтому я вас и спросил про то, как вы собрались записывать те 2 записи. Вы случаем не на КЛАДР работаете? LOL У тех ребят такая же логика, в бд черт ногу сломит. Страшно представить как они выборку делают, сколько там парсеров лютых написано. Разница то всего лишь: один проект, требующий нормальной работы на оборудовании за 100к рублей (сюда поле забьем, да и тут че мелочиться) и тот же самый проект правильно спроектированный будет так же летать на оборудовании в 20к Я даже удвилен, как вы человеку не посоветовали "да эт херня все, обратись к грамотному, он за деньги сделает" facepalm p.s. не аргумент? или вы дальше будете троллить? Ах да, этож херня все *factpalm* Платите. Сколько же вас "спецЫалистов пыхпэ". Слив засчитан. Всего хорошего
для вас 50 баксов это - залить баблом? ну беда, чо в той структуре, что я предложил всё кристально ясно. вы вобще меня слушали? =) я не вижу у себя НИКАКИХ косяков, которые приводят к проблемам на слабых машинах. База если распухнет на мульён записей, если не считать описания, в худшем случае до 100МБ дорастёт. И то не факт. это вторая моя по частоте употребления фраза. вам просто не повезло. не шучу. =) покеда. Только ты скажи сначала, что это за оборудование за 20к рублей, и что там в моем случае будет плохо работать. Ты так и не сказал, что в моей реализации плохо. Общие слова не являются аргументацией. Аргументация, это когда ты скажешь, что в такой реализации такие-то операции будут проходить долго или там чего еще. Где вы работаете, как вас зовут, чего вы стесняетесь? почему не отвечаете на прямые вопросы? У меня вот даже фотка есть, и имя с фамилией. А вы пришли, нафунякали и бежать. Отлично!
Приеду - покораю ? Работал с КЛАДРом. Сперва тоже вызвало некое недоумение, потом вник. Там всё очень запросто получается простыми запросами без всяких рекурсий и работает быстро (если работать с их числами не как с текстовыми строками с помощью like, а просто разбить длинное число на 4 smallint столбца, поставить на них ключи и далее просто выборки WHERE `a` = X AND `b` = Y AND `c` = Z).
нет, зачем. человек меня учит уму-разуму. я ж не спорю, что у меня квалификация маленькая. Просто можно сказать, я такой-то работаю вот тут, много лет мол... На своем веку, мол, повидал много бд. Мой опыт говорит, мол, надо делать так да сяк. Хз. Я всегда считал, что открытая беседа двух взрослых людей строится так, что мы что-то разбираем. Смотрим отрицательные и положительные стороны явления. А тут "всё говно слив засчитан". Может я и не прав. Но я не вижу в своём способе растабличивания базы каких-либо проблем. Я спросил раз пять. Ответа нет.
Добрые люди, я смотрю у вас тут не хилая дискуссия развернулась, но может мне кто-нибудь все-таки поможет с кодом, который я выложил, а то я уже не знаю что с ним делать, а нужно очень... вся работа встала, умные люди помогите пожалуйста!!!!
вот я имел в виду вопрос про этот код...проблема в том ,что когда импортирую всю базу в xls-файл все работает....но мне нужно импортировать только определенную выборку(результат поиска по базе) Код (Text): $query = "SELECT * FROM t WHERE UPPER (date) LIKE '%".strtoupper($_POST['date'])."%'"; и желательно, чтобы этот результат еще и отобразился на html странице и вот тут-то и затык, вылетает ошибка связанная с этими заголовками Код (Text): header('Content-Type: application/vnd.ms-excel;'); header('Content-Disposition: attachment; filename="'.$filename.'"'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header("Content-Transfer-Encoding: binary"); header('Pragma: public'); header("Content-Length: ".strlen($data)); } else { header('Content-Type: application/vnd.ms-excel;'); header('Content-Disposition: attachment; filename="'.$filename.'"'); header("Content-Transfer-Encoding: binary"); header('Expires: 0'); header('Pragma: no-cache'); header("Content-Length: ".strlen($data)); } exit($data); посмотрите пожалуйста код, что я сделал не так? Код (Text): <?php $filename = 'tt.xls'; /* Соединение, выбор БД */ $db = mysql_connect("localhost", "rau2", ""); mysql_select_db("baza2", $db); mysql_query("SET NAMES UTF-8"); $query = "SELECT * FROM t WHERE UPPER (date) LIKE '%".strtoupper($_POST['date'])."%'"; $res = mysql_query( $query,$db ) or die("Запрос ошибочный"); echo '<h2>База</h2>'; echo '<table border="1" cellpadding="2" cellspacing="0">'; echo '<tr><th>ID</th><th>Имя</th><th>Возраст</th><th>Вес</th><th>Дата</th><th>Ред.</th><th>Удл.</th></tr>'; $row = mysql_fetch_array($res); while ( $row = mysql_fetch_array( $res ) ) { echo '<tr>'; echo '<td>'.$row['id'].'</td>'; echo '<td>'.$row['name'].'</td>'; echo '<td>'.$row['old'].'</td>'; echo '<td>'.$row['ves'].'</td>'; echo '<td>'.$row['date'].'</td>'; echo '<td><a href="'.$_SERVER['PHP_SELF'].'?action=editform&id='.$row['id'].'">Ред.</a></td>'; echo '<td><a href="'.$_SERVER['PHP_SELF'].'?action=delete&id='.$row['id'].'">Удл.</a></td>'; echo '</tr>'; } echo '</table>'; echo '</br></br><td><button type="button" onClick="history.back();">Отобразить всю базу данных</button></td>'; require_once 'Z:/home/localhost/www/PhpExcel/Classes/PHPExcel.php'; $phpExcel = new PHPExcel(); for($i = 2;$row = mysql_fetch_array($res);$i++) { $foo = $phpExcel->getActiveSheet()->setCellValue('A1', 'Имя'); $foo = $phpExcel->getActiveSheet()->setCellValue('B1', 'Возраст'); $foo = $phpExcel->getActiveSheet()->setCellValue('C1', 'Вес'); $foo = $phpExcel->getActiveSheet()->setCellValue('D1', 'Дата'); $foo = $phpExcel->getActiveSheet()->setCellValue('A'.$i, $row['name']); $foo = $phpExcel->getActiveSheet()->setCellValue('B'.$i, $row['old']); $foo = $phpExcel->getActiveSheet()->setCellValue('C'.$i, $row['ves']); $foo = $phpExcel->getActiveSheet()->setCellValue('D'.$i, $row['date']); } $phpExcel = PHPExcel_IOFactory::createWriter($phpExcel, 'Excel5'); $phpExcel->save($filename); $data = file_get_contents($filename); // Generate the server headers if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) { header('Content-Type: application/vnd.ms-excel;'); header('Content-Disposition: attachment; filename="'.$filename.'"'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header("Content-Transfer-Encoding: binary"); header('Pragma: public'); header("Content-Length: ".strlen($data)); } else { header('Content-Type: application/vnd.ms-excel;'); header('Content-Disposition: attachment; filename="'.$filename.'"'); header("Content-Transfer-Encoding: binary"); header('Expires: 0'); header('Pragma: no-cache'); header("Content-Length: ".strlen($data)); } exit($data); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head profile="http://gmpg.org/xfn/11"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> </body> </html>
Ты пытаешься выводить echo '<td>'.$row['id'].'</td>'; а потом используешь header(), так нельзя. До вызова ф-и header нельзя ничего выводить.