Почему Вы создаете Представление в базе данных?

Необходимо быть уверены, что данные сессии безопасны. Путем рассмотрения php.ini или использования phpinfo () можно найти Вас настройками сессии. _session.save_path_ говорит Вам, где они сохраняются.

Проверка разрешение папки и ее родителей. Это не должно быть общедоступно (/tmp) или быть доступно другими веб-сайтами на Вашем общем сервере.

Принятие Вы все еще хотите использовать php сессию, можно установить php, чтобы использовать другую папку путем изменения _session.save_path_ или сохранить данные в базе данных путем изменения _session.save_handler_.

Вы смогли устанавливать _session.save_path_ в своем php.ini (некоторые поставщики позволяют его), или для апача + mod_php, в .htaccess файле в Вашей корневой папке сайта: php_value session.save_path "/home/example.com/html/session". Можно также установить его во время выполнения с _session_save_path () _.

Проверка учебное руководство или Zend_Session_SaveHandler_DbTable Chris Shiflett для установки и альтернативный обработчик сессий.

256
задан MedicineMan 14 August 2009 в 04:26
поделиться

20 ответов

Представление дает несколько преимуществ.

1. Представления могут скрывать сложность

Если у вас есть запрос, который требует объединения нескольких таблиц или имеет сложную логику или вычисления, вы можете закодировать всю эту логику в представлении, а затем выбрать из представления, как если бы вы делали таблицу.

2. Представления могут использоваться как механизм безопасности

. Представление может выбирать определенные столбцы и / или строки из таблицы (или таблиц), а права доступа устанавливаются для представления вместо базовых таблиц. Это позволяет выводить на поверхность только те данные, которые нужны пользователю.

3. Представления могут упростить поддержку устаревшего кода

. Если вам нужно провести рефакторинг таблицы, который нарушит работу большого количества кода, вы можете заменить таблицу представлением с тем же именем. Представление предоставляет ту же схему, что и исходная таблица, но фактическая схема изменилась.

452
ответ дан 23 November 2019 в 02:44
поделиться

Считайте это рефакторингом схемы вашей базы данных.

0
ответ дан 23 November 2019 в 02:44
поделиться

Представления также разбивают очень сложную конфигурацию и таблицы на управляемые блоки, которые легко запрашивать. В нашей базе данных вся наша система управления таблицами разбита на представления из одной большой таблицы.

1
ответ дан 23 November 2019 в 02:44
поделиться

У меня всего около 10 представлений в моих производственных базах данных. Я использую несколько столбцов, которые использую все время. Один набор, который я использую, состоит из 7 таблиц, некоторые с внешними объединениями, и вместо того, чтобы постоянно переписывать это представление, мне нужно только вызывать это представление в select и делать одно или два соединения. Для меня это просто экономия времени.

1
ответ дан 23 November 2019 в 02:44
поделиться

Одна любопытная вещь о представлениях заключается в том, что они рассматриваются Microsoft Access как таблицы: когда вы присоединяете интерфейс Microsoft Access к базе данных SQL с помощью ODBC, вы видите таблицы и представления в список доступных таблиц. Поэтому, если вы готовите сложные отчеты в MS Access, вы можете позволить серверу SQL выполнять объединение и запросы, что значительно упростит вам жизнь. То же самое для подготовки запроса в MS Excel.

1
ответ дан 23 November 2019 в 02:44
поделиться

Я рассматриваю хранимую процедуру больше как метод, который я могу вызывать для своих данных, тогда как для меня представление предоставляет механизм для создания синтетической версии базовых данных, по которой запросы или хранимые процедуры могут быть создан. Я создам представление, когда имеет смысл упрощение или агрегирование. Я напишу хранимую процедуру, если хочу предоставить очень специфическую услугу.

1
ответ дан 23 November 2019 в 02:44
поделиться

Это не совсем ответ на ваш вопрос, но я подумал, что стоит упомянуть Материализованные представления . Мой опыт в основном связан с Oracle , но предположительно SQL-Server довольно похож.

Мы использовали нечто подобное в нашей архитектуре для решения проблем с производительностью XML. Наши системы разработаны с большим количеством данных, хранящихся в виде XML в строке, и приложениям может потребоваться запросить определенные значения в ней. Обработка большого количества XMLTypes и запуск XPath для большого количества строк имеет большое влияние на производительность, поэтому мы используем форму материализованных представлений для извлечения нужных XML-узлов в реляционную таблицу при каждом изменении базовой таблицы. Это эффективно обеспечивает физический снимок запроса в определенный момент времени, в отличие от стандартных представлений, которые запускают свой запрос по запросу.

1
ответ дан 23 November 2019 в 02:44
поделиться

Мне нравится использовать представления для хранимых процедур, когда я только выполняю запрос. Представления также могут упростить безопасность, могут использоваться для упрощения вставки / обновления нескольких таблиц и могут использоваться для создания моментальных снимков / материализации данных (выполнения длительного запроса и сохранения результатов в кэше).

Я использовал материализованные представления для выполнения долгих запросов, точность которых не требуется в реальном времени.

1
ответ дан 23 November 2019 в 02:44
поделиться

Обычно я использую вьюхи, чтобы облегчить жизнь, получать подробные сведения от некоторой сущности, которая '

2
ответ дан 23 November 2019 в 02:44
поделиться

Представления могут быть находкой при создании отчетов по устаревшим базам данных. В частности, вы можете использовать разумные имена таблиц вместо загадочных пятибуквенных имен (где 2 из них - общий префикс!) Или имен столбцов, полных сокращений, которые, я уверен, имели смысл в то время.

2
ответ дан 23 November 2019 в 02:44
поделиться

Когда я хочу увидеть снимок таблицы (таблиц) и / или представление (только для чтения)

1
ответ дан 23 November 2019 в 02:44
поделиться

Несколько причин: Если у вас сложные объединения, иногда лучше иметь представление, чтобы при любом доступе соединения всегда были правильными, а разработчикам не приходилось запоминать все таблицы, которые им могут понадобиться. Обычно это может быть для финансового приложения, где чрезвычайно важно, чтобы все финансовые отчеты основывались на одном и том же наборе данных.

Если у вас есть пользователи, которым вы хотите ограничить записи, которые они могут когда-либо видеть, вы можете использовать представление , предоставьте им доступ только к представлению, а не к базовым таблицам, а затем запросите представление

Похоже, что отчеты Crystal предпочитают использовать представления для сохраненных процессов, поэтому люди, которые много пишут отчеты, обычно используют много представлений

] Представления также очень полезны при рефакторинге баз данных. Часто вы можете скрыть изменение, чтобы старый код не увидел его, создав представление. Иногда упрощает общие запросы на соединение, так как можно просто запросить имя таблицы вместо того, чтобы выполнять все соединения.

Другой причиной является ограничение данных для разных пользователей. Так, например:

Таблица1: Столбцы - USER_ID; USERNAME; SSN

Пользователи с правами администратора могут иметь привилегии в реальной таблице, но пользователи, которым вы не хотите иметь доступ, чтобы сказать SSN, вы создаете представление как

CREATE VIEW USERNAMES AS SELECT user_id, username FROM Table1;

Затем предоставьте им права доступа к представлению, а не к таблице.

3
ответ дан 23 November 2019 в 02:44
поделиться

Представление - это инкапсуляция запроса. Запросы, преобразованные в представления, как правило, сложны, и поэтому сохранение их в качестве представления для повторного использования может быть полезным.

38
ответ дан 23 November 2019 в 02:44
поделиться

Одним из основных преимуществ представления над хранимой процедурой является то, что вы можете использовать представление так же, как и таблицу. А именно, представление может быть упомянуто непосредственно в предложении FROM запроса. Например, SELECT * FROM dbo.name_of_view .

Практически во всех остальных отношениях хранимые процедуры более мощные. Вы можете передавать параметры, включая параметры out , которые позволяют эффективно возвращать несколько значений одновременно, вы можете выполнить SELECT , INSERT , UPDATE и DELETE и т. Д. И т. Д.

Если вы хотите, чтобы View могла выполнять запросы из предложения FROM , но вы также хотите иметь возможность передавать параметры, это тоже можно сделать. Это называется функцией с табличным значением.

Вот довольно полезная статья по теме:

http://databases.aspfaq.com/database/should-i-use-a-view-a-stored-procedure-or-a-user-defined -function.html

РЕДАКТИРОВАТЬ: Между прочим, такого рода возникает вопрос, какое преимущество имеет представление перед функцией с табличным значением? У меня нет действительно хорошего ответа на этот вопрос, но я отмечу, что синтаксис T-SQL для создания представления проще, чем для функции с табличным значением, и пользователи вашей базы данных могут быть более знакомы с представлениями.

7
ответ дан 23 November 2019 в 02:44
поделиться

Он может работать как хороший «посредник» между вашим ORM и вашими таблицами.

Пример:

У нас была таблица Person, в которой нам нужно было изменить структуру, поэтому столбец SomeColumn собирался переместить в другую таблицу и будет иметь отношение «один ко многим» с.

Однако большая часть системы, что касается Person, по-прежнему использовала SomeColumn как единое целое, а не как много вещей . Мы использовали представление, чтобы собрать все SomeColumns вместе и поместить его в представление, что отлично сработало.

Это сработало, потому что уровень данных изменился, но бизнес-требования не изменились фундаментально, поэтому бизнес-объекты не изменились. не нужно менять. Если бы бизнес-объекты изменились, я не думаю, что это было бы жизнеспособным решением, но представления определенно служат хорошей средней точкой.

6
ответ дан 23 November 2019 в 02:44
поделиться

Вот две общие причины:

Вы можете использовать его в целях безопасности. Не предоставляйте разрешения для основной таблицы и создавайте представления, которые ограничивают доступ к столбцам или строкам, и предоставляют пользователям разрешения на просмотр представления.

Вы можете использовать его для удобства. Объедините несколько таблиц, которые вы все время используете вместе в представлении. Это может упростить и упростить запросы.

5
ответ дан 23 November 2019 в 02:44
поделиться

Я обычно создаю представления для денормализации и / или агрегирования данных, часто используемых в целях отчетности.

РЕДАКТИРОВАТЬ

В порядке уточнения, если бы у меня была база данных, в которой некоторые из сущностей были человеком, компанией, ролью, типом владельца, порядком, деталями заказа, адресом и телефоном, где в таблице людей хранились оба сотрудники и контакты, а также в таблицах адресов и телефонов хранились номера телефонов как для физических лиц, так и для компаний, а команде разработчиков было поручено создавать отчеты (или делать данные отчетов доступными для лиц, не являющихся разработчиками), таких как продажи по сотрудникам или продажи по клиентам, продажи по регионам, продажи по месяцам, клиенты по штатам, и т. д. Я бы создал набор представлений, которые денормализовали отношения между объектами базы данных, чтобы было доступно более интегрированное представление (без каламбура) объектов реального мира. Некоторые из преимуществ могут включать:

  1. Уменьшение избыточности при написании запросов
  2. Установление стандарта для связанных объектов
  3. Предоставление возможностей для оценивать и максимизировать производительность для сложных расчетов и стыков (например, индексирование в представлениях Schemabound в MSSQL)
  4. Повышение доступности данных и интуитивно понятный для членов команды и не разработчиков.
28
ответ дан 23 November 2019 в 02:44
поделиться

Помимо прочего, его можно использовать для обеспечения безопасности. Если у вас есть таблица «клиентов», вы можете предоставить всем своим продавцам доступ к полям с именем, адресом, почтовым индексом и т. Д., Но не к кредитной_карте_номер. Вы можете создать представление, которое включает только те столбцы, к которым им нужен доступ, а затем предоставить им доступ к представлению.

85
ответ дан 23 November 2019 в 02:44
поделиться

" Комментарии к документации XML (Руководство по программированию на C #) В Visual C # вы можете создать документацию для своего кода, включив теги XML в специальные поля комментариев в исходном коде непосредственно перед блоком кода, на который они ссылаются. "

http://msdn.microsoft.com/en-us/library /b2s063f7.aspx

затем вы можете использовать Sandcastle для генерации файлов chm, если хотите

http://www.hanselman.com/blog/SandcastleMicrosoftCTPOfAHelpCHMFileGeneratorOnTheTailsOfTheDeathOfNDoc.aspx

-121 --- 14129 ] _cancelled должен быть volatile . (если вы не выбрали блокировку)

Если один поток изменяет значение _cancelled , другие потоки могут не видеть обновленное результат.

Кроме того, я думаю, что операции чтения / записи _cancelled являются атомарными :

Раздел 12.6.6 спецификации CLI гласит: "Соответствующий интерфейс командной строки должен гарантировать, что доступ для чтения и записи к правильному выровненные ячейки памяти не больше чем исходный размер слова атомарен когда все записи обращаются к При рисовании пунктирных линий вы можете варьировать расстояние между штрихами, чтобы убедиться, что у вас никогда не будет частичных четырехугольников на конечных точках. Это может визуально отвлекать, так как расстояние будет регулироваться в зависимости от длины сегмента.

edit:

Ах, картинка помогает. Я предполагаю, что, поскольку это на iPhone, вы получаете серию точек, из которых линии между ними дают приемлемую кривую. Если это так, использование примитивов сплайнов / кривых, вероятно, излишне. Я бы, вероятно, подошел к рисованию линий, как показано, просто путем рисования четырехугольников в каждой точке данных, которая находится на заданном расстоянии от последней точки данных.

Алгоритм будет примерно таким:

  1. Нарисовать четырехугольник на первой точке данных (с соответствующим поворотом)
  2. Перемещайтесь по списку точек, пока не «Я @ 190d11Вы получите нежелательные пробелы в заголовках и полях данных. Хуже того, ", который должен« защищать »этот разрыв строки в третьем столбце, будет проигнорирован, потому что он находится не в начале поля.

    Если у вас есть символы, отличные от ASCII (закодированные в UTF-8) в файле у вас должна быть спецификация UTF-8 (3 байта, шестнадцатеричный EF BB BF ) в начале файла. В противном случае Excel будет интерпретировать данные в соответствии с вашим языковым стандартом по умолчанию. кодировка (например, cp1252) вместо utf-8, и ваши символы, отличные от ASCII, будут удалены.

    Следующие комментарии относятся к Excel 2003, 2007 и 2013; не тестировалось в Excel 2000

    Если вы открываете файл двойным -щелкнув его имя в проводнике Windows, все работает нормально.

    Если открыть его из Excel, результаты будут разными: обязательно будет по 50% каждая. В значение может меняться в зависимости от их содержание. Мне также нужны все предметы в эти ячейки независимо от того, сколько строк должны выстроиться так же, как они будет в таблице ».

Вышеупомянутое невозможно в кроссбраузерном режиме без использования таблицы (вы можете смоделировать макет таблицы с помощью CSS:« display: table », но это не работает в IE6 или IE7) .

Я бы посоветовал вам думать немного по-другому при разработке с использованием CSS вместо таблиц, невозможно просто заменить «tr» и «td» на «div» и заставить все волшебным образом работать, как раньше. Я предлагаю вам установите ширину нижних «ячеек» и используйте один из вариантов, которые вам дали выше.

Надеюсь, что это поможет!

Так, например, если у вас есть

<mx:Canvas><mx:Label id="myLabel" /></mx:Canvas>

, вы можете получить к нему доступ по его id в качестве имени переменной:

myLabel.text = "Hello world!";

Дайте мне знать, если вам нужны дополнительные разъяснения. Если вы спрашиваете не об этом, не стесняйтесь комментировать, и я сделаю еще один удар.

С уважением, Вам нужно будет вернуть несколько частей информации для вашего ответа. К счастью, вы можете легко сделать это с помощью JSON, и jQuery автоматически обработает это за вас, если вы укажете тип ответа json. Объект, который вы вводите в свою функцию обратного вызова ajax, будет содержать все необходимые вам фрагменты данных в виде различных свойств.

Я бы посоветовал выработать привычку возвращать код состояния «успех» или «неудача» при каждом вызове ajax. , и набор ошибок с ним. См. Эту замечательную запись в блоге для получения дополнительной информации о том, что я имею в виду.

Причина этого в том, что вызов ajax всегда в основном "успешен", если только сервер действительно не может обработать запрос и не вернет код состояния HTTP сбоя. Если результат запроса похож на ошибку проверки, Если у вас сложные объединения, иногда лучше иметь представление, чтобы при любом доступе соединения всегда были правильными, а разработчикам не приходилось запоминать все таблицы, которые им могут понадобиться. Обычно это может быть для финансового приложения, где чрезвычайно важно, чтобы все финансовые отчеты основывались на одном и том же наборе данных.

Если у вас есть пользователи, которым вы хотите ограничить записи, которые они могут когда-либо видеть, вы можете использовать представление , предоставьте им доступ только к представлению, а не к базовым таблицам, а затем запросите представление

Похоже, отчеты Crystal предпочитают использовать представления для сохраненных процессов, поэтому люди, которые много пишут отчеты, обычно используют много представлений

] Представления также очень полезны при рефакторинге баз данных. Часто вы можете скрыть изменение, чтобы старый код не увидел его, создав представление.

11
ответ дан 23 November 2019 в 02:44
поделиться

Я создаю xxx, который отображает все отношения между основной таблицей (например, таблицей продуктов) и справочными таблицами (например, ProductType или ProductDescriptionByLanguage). Это создаст представление, которое позволит мне получить продукт и все его детали, переведенные из его внешних ключей в его описание. Затем я могу использовать ORM для создания объектов, чтобы легко создавать сетки, поля со списком и т. Д.

1
ответ дан 23 November 2019 в 02:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: